67

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.

4

3 に答える 3

164

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. http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

  • は EPOC からのミリ秒を返すメソッドをDate提供するため、タイムゾーンに従って日付を適切にフォーマットするためにタイムゾーンを指定する必要があります。そうしないと、JVM のデフォルトのタイムゾーンが使用されます (適切に構成されていれば、とにかく正しいでしょう)。 )getTime()SimpleDateFormat
于 2013-07-02T18:22:01.087 に答える
39

Java 8 では、Unix タイムスタンプからInstant.ofEpochSecondを作成するためのユーティリティ メソッドが導入されていますInstant。これを に変換して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 を使用している人にとっては便利かもしれないと思いました。

于 2014-12-05T15:52:40.433 に答える
12

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

java.util.Date dateTime=new java.util.Date((long)timeStamp*1000);
于 2013-07-02T18:12:55.170 に答える