2017-07-17 156 views
1

我需要什么转换UNIX /出现时间H:毫米

我需要这样的“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; 
} 

会发生什么

当双转换长时间它就会被四舍五入(我认为),那么所有项目具有相同的时间如果他们在几分钟之内彼此。

+0

你需要什么样的精度成倍UNIX时间×1000?秒够了?如果是的话,你可以简单地删除小数部分,并只转换1500322822部分以获得日期与秒 – MatPag

+0

我想尽可能精确,但我认为删除小数将没事。我正在阅读JSON文件中的值,所以我认为在读取它们之后我必须将它们四舍五入。 – MrBovineJoni

回答

1

你可以用这个去:

//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" 

您需要因为Java java.util.Date类预计毫秒

+0

乘以1000固定它。谢谢 – MrBovineJoni