JavaでUNIXタイムスタンプから日付と時刻に分を変換するにはどうすればよいですか。たとえば、タイムスタンプ1372339860
はThu, 27 Jun 2013 13:31:00 GMT
に対応します。
1372339860
を2013-06-27 13:31:00 GMT
に変換します。
編集:実際には米国のGMT-4に合わせて欲しいので、2013-06-27 09:31:00
になります。
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のデフォルトのタイムゾーン(適切に構成されていれば、いずれにしても正しい)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を使用している人々にとって役立つと思いました。
タイムスタンプに1000を掛けて、ミリ秒に変換する必要があります。
Java.util.Date dateTime=new Java.util.Date((long)timeStamp*1000);