public static String getDate(double seconds) {
Date date = new Date((long)(seconds * 1000));
return dateFormat.format(date);
}
此方法生成无效日期:
1465235513.09794
不知怎的"2015-06-31T02:33:31.921+0000"
来自{{1}} - 有趣的部分是6月31日。
有任何线索吗?
答案 0 :(得分:3)
一个疯狂的猜测,你是在多线程程序中使用它吗?如果是这种情况,SimpleDateFormat不是线程安全的。我宁愿将dateFormat移动到getDate()方法中。 来自Javadoc
日期格式未同步。建议为每个线程创建单独的格式实例。如果多个线程同时访问格式,则必须在外部进行同步。
或者使用Java 8 java.time&正如Jon Skeet建议的那样DateTimeFormatter。
来自Javadoc
从模式创建的格式化程序可以多次使用 必要的,它是不可变的并且是线程安全的。
或者使用Joda时间(如果你出于某种原因不能使用Java 8),就像Adrian Shum所说的那样。
答案 1 :(得分:0)
final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
double seconds = 1465235513.09794;
Date date = new Date((long)(seconds * 1000)); //1465235513097
String reqDate = dateFormat.format(date);
System.out.println(reqDate); // 2016-06-06T23:21:53.097+0530
如果有任何混淆,请参考纪元时间