web-dev-qa-db-ja.com

UNIXタイムスタンプをjavaの日付に変換します

JavaでUNIXタイムスタンプから日付と時刻に分を変換するにはどうすればよいですか。たとえば、タイムスタンプ1372339860Thu, 27 Jun 2013 13:31:00 GMTに対応します。

13723398602013-06-27 13:31:00 GMTに変換します。

編集:実際には米国のGMT-4に合わせて欲しいので、2013-06-27 09:31:00になります。

57
bigData

SimlpeDateFormatを使用して、次のように日付をフォーマットできます。

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

SimpleDateFormatが非常に柔軟な場合に取るパターンは、特定のDateを指定して記述したパターンに基づいて異なるフォーマットを生成するために使用できるすべてのバリエーションをjavadocsでチェックできます。 http://docs.Oracle.com/javase/7/docs/api/Java/text/SimpleDateFormat.html

  • DateはEPOCからのミリ秒を返すgetTime()メソッドを提供するため、タイムゾーンに応じて日付を適切にフォーマットするためにSimpleDateFormatにタイムゾーンを与える必要があります。 JVMのデフォルトのタイムゾーン(適切に構成されていれば、いずれにしても正しい)
142
David Hofmann

Java 8では、Unixタイムスタンプから Instant を作成するための Instant.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を使用している人々にとって役立つと思いました。

31
Jonathan

タイムスタンプに1000を掛けて、ミリ秒に変換する必要があります。

Java.util.Date dateTime=new Java.util.Date((long)timeStamp*1000);
12
andre.barata