我需要将unix时间戳转换为日期对象。 我试了一下:

java.util.Date time = new java.util.Date(timeStamp);

时间戳值:1280512800

日期应该是“2010/07/30 - 22:30:00”(因为我通过PHP得到它),但我得到的是Thu 1月15日23:11:56 IRST 1970。

应该怎么做呢?


当前回答

看起来日历是一种新的方式:

Calendar mydate = Calendar.getInstance();
mydate.setTimeInMillis(timestamp*1000);
out.println(mydate.get(Calendar.DAY_OF_MONTH)+"."+mydate.get(Calendar.MONTH)+"."+mydate.get(Calendar.YEAR));

最后一行只是一个如何使用它的例子,这一行将打印如“14.06.2012”。

如果您已经使用System.currentTimeMillis()保存时间戳,则不需要“*1000”部分。

如果你在一个字符串中有时间戳,你需要首先将它解析为long: long . parselong(时间戳)。

https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html

其他回答

Date d = new Date(i * 1000 + TimeZone.getDefault().getRawOffset());

看起来日历是一种新的方式:

Calendar mydate = Calendar.getInstance();
mydate.setTimeInMillis(timestamp*1000);
out.println(mydate.get(Calendar.DAY_OF_MONTH)+"."+mydate.get(Calendar.MONTH)+"."+mydate.get(Calendar.YEAR));

最后一行只是一个如何使用它的例子,这一行将打印如“14.06.2012”。

如果您已经使用System.currentTimeMillis()保存时间戳,则不需要“*1000”部分。

如果你在一个字符串中有时间戳,你需要首先将它解析为long: long . parselong(时间戳)。

https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html

LocalDateTime是另一个选择,比如:

LocalDateTime.ofInstant(Instant.ofEpochSecond(unixtime), ZoneId.systemDefault())

kotlin的

fun unixToDate(timeStamp: Long) : String? {
    val time = java.util.Date(timeStamp as Long * 1000)
    val sdf = SimpleDateFormat("yyyy-MM-dd")
    return sdf.format(time)

}

这是正确的方法:

Date date = new Date ();
date.setTime((long)unix_time*1000);