长日期格式的转换无效

时间:2013-08-12 16:35:00

标签: java simpledateformat

我的代码出了什么问题:

long TimeinMillisec = system.currentTimeMillis()/1000; //1376324360;

SimpleDateFormat simpledf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss", Locale.getDefault());
String time_str = simpledf.format(TimeinMillisec);

time_str给出了错误的值:

1970-01-16_23:18:44  

预期:

2013-08-12_18:19:20

3 个答案:

答案 0 :(得分:4)

这个毫秒数(1376324360)只有大约15.9天,因此日期计算看起来是正确的。

您是否在几秒钟内意外使用了某个值?乘以1000得出大约43。6年,当加到1970年(Java的0毫秒基数)给出了2013年。

答案 1 :(得分:1)

首先,你的长值不正确

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss",
                                                     Locale.getDefault());
Date date= sdf.parse("2013-08-12_18:19:20");
System.out.println(date.getTime()); // out put is 1376311760000

等效的mili-seconds long值应为1376311760000

使用以下内容可以正常使用

    long timeInMilliSec = 1376311760000L; // time in mili-seconds  
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
    Date date=new Date(timeInMilliSec);
    String time_str = sdf.format(date);
    System.out.println(time_str);

答案 2 :(得分:0)

看起来你已经掉了几个0。尝试:1376349560000

Millisecond conversion tool.