251786< - > 00:04:11786
Date date = new Date(251786);
DateFormat formatter = new SimpleDateFormat("HH:mm:ss,SSS");
String dateFormatted = formatter.format(date);
但是,dateFormatted的值是18:04:11,786
HH会怎样?
答案 0 :(得分:1)
您对Date构造函数(251786)的参数表示自纪元(或1970年1月1日00:00:00 GMT)以来近252秒。假设你的机器没有在格林威治标准时间运行,那你就得到了当地的时间偏差 - 或1970年1月1日00:04:11,786格林威治标准时间 - 而且我猜你在GMT-6 (即你的时区比格林尼治标准时间晚了6个小时,所以你在小时字段中得到18个 - 或者下午6点)。
答案 1 :(得分:0)
http://docs.oracle.com/javase/6/docs/api/java/util/Date.html#Date(long)
日期(长日期) 分配一个Date对象并对其进行初始化,以表示自标准基准时间(即“epoch”)以来的指定毫秒数,即1970年1月1日00:00:00 GMT。
答案 2 :(得分: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);
答案 3 :(得分:-1)
它绝对是4分11秒,这就是它的表现。
您的毫秒参数需要增加以获得数小时。