package dbfields; import android.content.Context; import android.os.Parcel; import android.os.Parcelable; import android.util.AttributeSet; import android.widget.EditText; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateTimeText extends EditText implements fieldDB { private String m_Value = null; public DateTimeText(Context context) { super(context); } public DateTimeText(Context context, AttributeSet attrs) { super(context,attrs); } public String getValue(){ return m_Value; } public void setValue(String val) { m_Value = null; //Присваиваю ниже так как нужно только проверянное значение даты if(val!=null && !val.equals("")) { Date date=null; try { date = new Date(Long.parseLong(val)*1000); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //Теперь для простого преобразования в тип даты PostgreSQL дату храню в виде текста в формате "yyyy-MM-dd HH:mm:ss" m_Value=format.format(date); } catch (NumberFormatException e) { } if(date==null){ try { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); date = format.parse(val); m_Value = val; } catch (ParseException e) { } } if(date!=null) { SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm"); //Убрал секунды так всё равно то что отображается не соответствует тому что храниться String str = format.format(date); setText(str); }else{ setText(""); } }else { setText(""); } } // Класс для сохранения изменений сделаных пользователем при повороте экрана public static class SavedStateDTT extends BaseSavedState { String value = ""; //Не может быть null почемуто вылетает! SavedStateDTT(Parcelable superState) { super(superState); } @Override public void writeToParcel(Parcel out, int flags) { super.writeToParcel(out, flags); out.writeString(value); } public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { public SavedStateDTT createFromParcel(Parcel in) { return new SavedStateDTT(in); } public SavedStateDTT[] newArray(int size) { return new SavedStateDTT[size]; } }; private SavedStateDTT(Parcel in) { super(in); value = in.readString(); } } @Override public Parcelable onSaveInstanceState() { SavedStateDTT st = new SavedStateDTT(super.onSaveInstanceState()); st.value = getValue(); if(st.value==null) st.value=""; return st; } @Override public void onRestoreInstanceState(Parcelable state) { if (state == null || !(state instanceof SavedStateDTT)) { super.onRestoreInstanceState(state); return; } SavedStateDTT ss = (SavedStateDTT) state; super.onRestoreInstanceState(ss.getSuperState()); setValue(ss.value); }; }