我正在使用DateTimePicker
选择日期和时间,当我按确定按钮获取日期时间时使用getDateTime()并将其分配给日历对象(selectedDate
)。我希望以格式显示时间( fri apr 27 06:00:00 am )。
所以我使用下面的代码进行格式化。
selectedDate = datePicker.getDateTime();
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd hh:mm:ss aa");
timeField.setText(sdf.formatLocal(selectedDate.get(Calendar.MILLISECOND)));
不知道是解析错误还是DateTimePicker
返回错误的时间,但显示的文本是否适用于任何日期时间
Thu Jan 01 05:00:00 AM
因为我必须定位大多数设备,我的应用程序定位OS5并在模拟器9550上进行测试。
答案 0 :(得分:4)
问题是您正在检索仅当前日期的MILLISECOND
字段的值,而不是整个日期。您可能需要毫秒精度,但此代码
selectedDate.get(Calendar.MILLISECOND)
只是extracting the milliseconds field from the current date/time。这只是自前一秒以来的毫秒数。类似于
selectedDate.get(Calendar.MONTH);
今天只返回4(或者它可能会返回3,我不记得它是否基于0)。
你应该使用
timeField.setText(sdf.formatLocal(selectedDate.getTime().getTime()));
答案 1 :(得分:0)
很难理解你的问题,因为你没有告诉我们你没想到会发生什么和/或你得到的任何错误信息;此外,我无法在任何地方找到formatLocal()作为SimpleDateFormat的方法。
我注意到你似乎正在传递日期的部分,以毫秒为单位。如果您希望日期表示为毫秒,则该方法为Date.getTime()。