2017-07-17 55 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