将日期字符串转换为可读日期格式

时间:2016-02-11 04:38:19

标签: java

我收到日期为“1279340983”所以我想转换为可读格式,如2010-07-17。我尝试使用以下代码

String createdTime = "1279340983";
Date date1 = new Date(Long.parseLong(createdTime));
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf1.format(date1));

但它返回1970-01-16作为输出。当尝试在线工具时,它显示Sat, 17 Jul 2010 04:29:43 GMT任何想法为什么这段代码没有显示预期的输出?

2 个答案:

答案 0 :(得分:2)

在您给定的时间内没有包含时区,因此Java将采用本地时区

    String createdTime = "1279340983";
    Date date1 = new Date(Long.parseLong(createdTime) * 1000); // right here
    System.out.println(date1.toString()); // this is what you are looking online
    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss zzz"); // here you would have to customize the output format you are looking for
    System.out.println(sdf1.format(date1));
  

输出

Sat Jul 17 09:59:43 IST 2010 // this would be your online result 
2010-07-17 09:59:43 IST      // this is something you want to change ,

如果你愿意,你可能想要更改时区

sdf1.setTimeZone(TimeZone.getTimeZone("GMT"));
  

输出   2010-07-17 04:29:43 GMT

答案 1 :(得分:0)

您正在使用的在线转换器是从转换日期。 Java的Date构造函数使用milliseconds,而不是秒。您需要将答案乘以1000以使其匹配。

    String createdTime = "1279340983";
    Date date1 = new Date(Long.parseLong(createdTime) * 1000); // right here
    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
    System.out.println(sdf1.format(date1));