【发布时间】:2016-07-11 16:31:02
【问题描述】:
我想存储用户通过 Android 上的日期选择器和时间选择器选择的日期和时间。通过阅读各种线程,我得出结论以整数格式存储日期和时间。所以我使用以下函数将它们转换为长值,但是当我将它们转换回日期时,它给了我错误的日期。
private DatePickerDialog.OnDateSetListener startDatePickerListener = new DatePickerDialog.OnDateSetListener(){
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
String dateText = getTimeString(year,monthOfYear,dayOfMonth);
//Converting Date to long so that can be stored in DB
long date = Utility.getDateLong(year,monthOfYear,dayOfMonth);
taskModel.setStartDate(date);
startDateView.setText(dateText);
}
};
public static long getDateLong(int year, int month, int day){
Calendar cal = new GregorianCalendar(year, month, day);
long timeStamp = (cal.getTimeInMillis()+cal.getTimeZone().getOffset(cal.getTimeInMillis()))/1000;
return timeStamp;
}
要将长值转换回日期,我使用以下函数:
public static String getDateFromLongValue(long d){
Date date = new Date(d);
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
String formattedDate = dateFormat.format(date);
return formattedDate;
}
但这给了我与输入值不同的日期。有没有其他方法可以做到这一点。我基本上需要比较日期并找出两个日期之间经过的时间?
【问题讨论】:
-
我使用 TimeStrings (see)。有人更喜欢整数。选择你的方法。
-
为什么不使用公历,同时再次转换回来以确保您考虑到时区偏移量??
-
我喜欢在数据库中存储日期时使用纪元时间。然后做转换客户端/前端