2013-07-02 155 views
37

如何在Java中將unix時間戳記的分鐘數轉換爲日期和時間。例如,時間戳1372339860對應於Thu, 27 Jun 2013 13:31:00 GMT在java中將unix時間戳轉換爲日期

我想將1372339860轉換爲2013-06-27 13:31:00 GMT

編輯:其實我希望它是根據美國時間格林威治標準時間-4,所以它將是2013-06-27 09:31:00

+0

'日期時間任何=新的日期時間(yourunixtimestampaslong * 1000L,DateTimeZone.UTC);'如果你使用[JodaTime(HTTP:/ /joda-time.sourceforge.net/)。或'DateTime whatever = new DateTime(yourunixtimestampaslong * 1000L,DateTimeZone.forOffsetHours(-4));'爲你的第二個例子。 Javadoc [here](http://joda-time.sourceforge.net/apidocs/index.html) – fvu

+0

SimpleDateFormat format = new SimpleDateFormat(「dd-MM-yyyy HH:mm:ss」); –

回答

115

您可以使用SimlpeDateFormat格式化你的日期是這樣的:

long unixSeconds = 1372339860; 
// convert seconds to milliseconds 
Date date = new Date(unixSeconds*1000L); 
// the format of your date 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z"); 
// give a timezone reference for formatting (see comment at the bottom) 
sdf.setTimeZone(TimeZone.getTimeZone("GMT-4")); 
String formattedDate = sdf.format(date); 
System.out.println(formattedDate); 

SimpleDateFormat需要,如果非常模式靈活的,您可以檢查javadoc中所有可用於根據給定的模式生成不同格式的變體Datehttp://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

  • 由於Date提供了getTime()方法返回自EPOC毫秒,需要你給SimpleDateFormat一個時區格式化日期正確acording你的時區,否則將使用的默認時區JVM(其中,如果以及配置將反正是正確的)
+0

已修改,謝謝@fvu –

+2

此答案更好,因爲作者還舉例說明了如何尊重時區。 – drdrej

+1

非常好!順便說一句,我們可以使用'TimeZone.getDefault()' – Atul

10

你需要給它的時間戳乘以1000轉換成毫秒:

java.util.Date dateTime=new java.util.Date((long)timeStamp*1000); 
+0

請注意,問題是將曆元紀錄轉換爲日期,然後將它轉換爲帶有時區偏移的模式 –

26

爪哇8引入用於創建從一個Unix時間戳的InstantInstant.ofEpochSecond實用方法,這然後可以轉換成ZonedDateTime最後格式化,例如:

final DateTimeFormatter formatter = 
    DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); 

final long unixTime = 1372339860; 
final String formattedDtm = Instant.ofEpochSecond(unixTime) 
     .atZone(ZoneId.of("GMT-4")) 
     .format(formatter); 

System.out.println(formattedDtm); // => '2013-06-27 09:31:00' 

我想這可能誰正在使用Java 8.對人有用

+0

很多java.Time功能在[ThreeTen-Backport](http://www.threeten.org/threetenbp/)中被移植到Java 6和7,並進一步適用於[Android](https://en.wikipedia。 org/wiki/Android_(operating_system))[ThreeTenABP](https://github.com/JakeWharton/ThreeTenABP)(參見[*如何使用... *](http://stackoverflow.com/q/38922754/642706) ))。 –

+0

您的UTC偏移示例('GMT-4')更適合於['OffsetDateTime'](https://docs.oracle.com/javase/8/docs/api/java/time/OffsetDateTime .html)而不是'ZonedDateTime'。另外,我建議你將你的示例代碼分解成幾部分,分別介紹每一步和每個想法。 –

相關問題