我收到日期为“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
任何想法为什么这段代码没有显示预期的输出?
答案 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));