2

DateTimePicker用来选择日期和时间,当我按下确定按钮时,使用 getDateTime() 获取日期时间并将其分配给 Calender 对象( 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返回错误的时间,但是为任何日期时间选择显示的文本是

周四 1 月 1 日上午 05:00:00。

由于我必须针对大多数设备,我的应用程序针对 OS5 并在 Simulator 9550 上进行测试。

4

2 回答 2

4

问题是您只检索当前日期MILLISECOND字段的值,而不是整个日期。您可能需要毫秒精度,但是这段代码

selectedDate.get(Calendar.MILLISECOND)

只是从当前日期/时间中提取毫秒字段。这只是自上一秒以来的毫秒数。类似于如何

selectedDate.get(Calendar.MONTH);

今天只会返回 4(或者它可能返回 3,我不记得它是否基于 0)。

你应该使用

timeField.setText(sdf.formatLocal(selectedDate.getTime().getTime()));
于 2013-04-27T21:22:01.970 回答
0

很难理解您的问题,因为您没有告诉我们您没有预料到的情况和/或您收到的任何错误消息;此外,我在任何地方都找不到 formatLocal() 作为 SimpleDateFormat 上的方法。

我确实注意到您似乎正在传递以毫秒为单位的日期部分。如果您希望将日期表示为毫秒,则方法是 Date.getTime()。

于 2013-04-27T14:38:06.593 回答