2

我试图将时间戳转换为人类可读的日期和时间。我试过了:

String dateSt = 1386580621268;
Log.i("*****", "date st is = "+dateSt);
long unixSeconds = Long.parseLong(dateSt);
Log.i("*******", "unix seconds is = "+unixSeconds);
Date date = new Date(unixSeconds*1000L); // *1000 is to convert seconds to milliseconds
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); // the format of your date
String formattedDate = sdf.format(date);
System.out.println(formattedDate);

预期的结果是09-12-2013,但是我得到了28-12-45908。上面的示例可以在以下位置找到:将 Unix 时间戳转换为日期 java,David Hofmann 的回答

4

3 回答 3

16

尝试这个,

public static String Epoch2DateString(long epochSeconds, String formatString) {
    Date updatedate = new Date(epochSeconds * 1000);
    SimpleDateFormat format = new SimpleDateFormat(formatString);
    return format.format(updatedate);
}
于 2013-12-18T10:02:59.827 回答
3

1386580621268不是 Unix 时间戳,即自 2013 年 9 月 12 日纪元以来的秒数,而是纪元以来的毫秒数。删除*1000L或将输入除以 1000。

于 2013-12-18T10:04:35.383 回答
2

我是这样解决的。

public static String Epoch2DateString(String epochSeconds) {
    Date updatedate = new Date(Integer.parseInt(epochSeconds) * 1000L);
    SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
    return format.format(updatedate);
}
于 2019-05-15T10:21:55.673 回答