我需要的:

我需要将类似“ 1500322822.816785”的内容转换为类似“ 3:45 PM”的格式。

我尝试过的

    public static String fromUnixTimestamp(String timestamp) {

    double itemDouble = Double.parseDouble(timestamp);
    long itemLong = (long) itemDouble;
    Date itemDate = new Date(itemLong);
    String itemDateStr = new SimpleDateFormat("h:mm a").format(itemDate);


    return itemDateStr;
}


怎么了:

当double转换很长时间时,它会四舍五入(我认为),因此,如果所有项目彼此之间都在几分钟之内,则它们具有相同的时间。

最佳答案

您可以这样做:

//i've removed the decimal digits from your number and added the L for long casting
Date itemDate = new Date(1500322822L * 1000);
//or alternatively you can do
//Date itemDate = new Date((long)1500322822 * 1000);
String text = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss a").format(itemDate);
//text is now "17-07-2017 08:20:22 PM"


您需要乘以UNIX时间x 1000,因为Java java.util.Date类期望毫秒

07-27 17:42