我有一个从DatePickerDialog的onDateSetListener调用的TimePickerDialog,以便允许用户一个接一个地选择日期和时间。我将信息存储在Calendar对象calendar
中。用户完成后,单击以将此信息和其他信息保存在数据库中。节省时间的相关部分就在这里
call.setContactTimestamp(new DateTime(calendar.getTimeInMillis()));
setContactTimestamp()
将org.joda.time.DateTime对象保存到表中。这一切似乎都很好。然后,我稍后使用此相关代码将此(和其他)数据显示给用户
TextView dateTime = (TextView) tableRow.findViewById(R.id.date_time);
dateTime.setText(sdf.format(calls.get(i).getContactTimestamp().getMillis()));
其中sdf是一个看起来像SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy h:mm a", Locale.US);
问题:显示的时间总是比本地时间晚6个小时和设备上显示的时间。我已经跟踪了断点,在数据保存之前我真正感到困惑的是,我评估sdf.format(calendar.getTimeInMillis())
并显示准确的时间。当我拉回信息时,毫秒关闭。
示例:我打开了我的Date / TimePickerDialogs,它选择了当前的日期和时间,2017年1月5日上午8:47:36。我点击保存它,并在上面显示的save语句中进行评估。
new DateTime(calendar.getTimeInMillis())
评估为2017-01-05T08:47:36.322-06:00
,1483627656322
毫秒。
然后我提取信息进行显示,返回的joda.time.DateTime评估为2017-01-05T08:47:36.000Z
1483606056000
毫秒,比我在凌晨2:47:36保存的时间落后6小时。
这是我的DatePickerDialog和TimePickerDialog,如果它是相关的。如果我遗漏了你认为很重要的事情请告诉我,我会补充一下。
DatePickerDialog dpd = new DatePickerDialog();
dpd.setOnDateSetListener(new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePickerDialog dialog, int year, int monthOfYear, int dayOfMonth) {
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, monthOfYear);
calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
TimePickerDialog tpd = new TimePickerDialog();
tpd.setOnTimeSetListener(new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) {
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minute);
callDateTime.setText(sdf.format(calendar.getTime()));
}
});
tpd.show(getActivity().getFragmentManager(), "tdp");
}
});
dpd.show(getActivity().getFragmentManager(), "dpd");
答案 0 :(得分:0)
尝试更改
discrete_distribution<int> weights ( temp_weights.begin(), temp_weights.end() );
到
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy h:mm a", Locale.US);
可以帮助你!