Java没有正确转换时代

时间:2013-10-21 15:04:03

标签: java epoch

我正在尝试转换以下纪元时间

1382364283

将其插入在线转换器时,它会给我正确的结果。

2013/10/21 15:00:28

但是以下代码

    Long sTime = someTime/1000;
    int test = sTime.intValue();  // Doing this to remove the decimal

    Date date = new Date(test);
    DateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
    String formatted = format.format(date);

    this.doorTime = formatted;

返回

16/01/1970 17:59:24

我已经尝试了其他几种方法来转换它,有什么我想念的吗?

2 个答案:

答案 0 :(得分:3)

纪元时间是自纪元以来的秒数。你将它除以一千,得到数千秒,即千秒。但Date所采用的参数以毫秒为单位。你的代码应该是:

    long someTime = 1382364283;
    long sTime = someTime*1000;  // multiply by 1000, not divide

    Date date = new Date(sTime);
    DateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
    String formatted = format.format(date);

    System.out.println(formatted); // 21/10/2013 10:04:43

我没有得到你的结果,但我得到的结果与我尝试的在线转换器相同。

答案 1 :(得分:1)

构造函数日期(长时间)需要毫秒时间!当你将someTime(可能是毫安)除以1000时,你得到的时间是秒,而不是毫秒。