2017-03-07 48 views
0

我想從long時間戳值中獲取年份,月份,日期和小時。我發現很多從時間戳值創建Calendar的例子,但是我沒有得到我想要的。將時間戳轉換爲Java中的日曆

我寫了下面

long timestamp = 1488866400; 

Calendar cal = GregorianCalendar.getInstance(); 
cal.setTimeInMillis(timestamp); 

System.out.println(cal.get(Calendar.YEAR)); 
System.out.println(cal.get(Calendar.MONTH)); 
System.out.println(cal.get(Calendar.DATE)); 

1488866400是星期二,2017年3月7日06:00:00 GMT,所以我希望上面的代碼給我一年2017,月2和日期7,但它給本年1970,月0和第17日。

任何人都可以告訴我,如果我做錯了什麼,或者如果它可以以不同的方式?

+1

我不能更強烈反對使用傳統的'爪哇。 util.Calendar'和'java.util.Date'類。您應該查看最適合您的用例的類的java.time文件包。 –

+0

請在發佈之前搜索Stack Overflow。大多數基本的日期時間問題已經被詢問和回答。 –

回答

1

乘以你的時間戳由1000 long timestamp = 1488866400 * 1000;

您的時間戳爲秒,日曆使用毫秒

0

試試這個:

long timestamp = 1488866400; 
LocalDate date = Instant.ofEpochMilli(timestamp).atZone(ZoneId.systemDefault()).toLocalDate(); 
System.out.println(date.getYear()); 
System.out.println(date.getMonth()); 
System.out.println(date.getDayOfMonth()); 
相關問題