0

251786 <-> 00:04:11,786

Date date = new Date(251786);
DateFormat formatter = new SimpleDateFormat("HH:mm:ss,SSS");
String dateFormatted = formatter.format(date);

但是,dateFormatted 的值为 18:04:11,786

HH 会发生什么?

4

4 回答 4

1

您对 Date 构造函数 (251786) 的参数表示自纪元以来几乎 252 秒(或 1970 年 1 月 1 日,格林威治标准时间 00:00:00)。假设您的机器未在 GMT 运行,您将获得本地时间偏移量 - 或 1970 年 1 月 1 日 00:04:11,786 GMT - 我猜你在 GMT-6 中(即你的时区落后 6 小时格林威治标准时间,因此您在小时字段中获得 18 - 或下午 6 点)。

于 2013-11-12T05:22:48.257 回答
0

http://docs.oracle.com/javase/6/docs/api/java/util/Date.html#Date(long)

Date(long date) 分配一个 Date 对象并将其初始化以表示自称为“纪元”的标准基准时间(即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。

于 2013-11-12T05:21:18.133 回答
0

我同意@Elliott,除了这里还有一点解释:)。

当您处于 GMT-6 时(比 GMT 晚 6 小时)标准the epoch将被视为January 1, 1970, 18:00:00而不是January 1, 1970, 00:00:00 GMT

251786然后你传递给Date构造函数的任何参数( )都将被添加到the epoch. 在您的情况下,它将是January 1, 1970, 18:00:00 000 + 251786 -> 您看到的结果将是 January 1, 1970, 18:04:11 786.

EEE, d MMM yyyy hh:mm:ss,SSS您可以通过使用模式甚至其他模式进行尝试来更多地理解它。

Date date = new Date(251786);
DateFormat formatter = new SimpleDateFormat("EEE, d MMM yyyy hh:mm:ss,SSS");
String dateFormatted = formatter.format(date);
于 2013-11-12T05:53:26.233 回答
-1

它绝对是 4 分 11 秒,这就是它所显示的。

您的毫秒参数需要增加以获得小时数。

于 2013-11-12T05:21:43.523 回答