1970年1月1日UTC(エポック時間)から数秒あります。
1320105600
その秒を以下の形式の日付と時刻に変換する必要があります。
2011年11月4日金曜日5:00AM
どうすればこれを達成できますか?
1970年1月1日UTC(エポック時間)から数秒あります。
1320105600
その秒を以下の形式の日付と時刻に変換する必要があります。
2011年11月4日金曜日5:00AM
どうすればこれを達成できますか?
java.util.Date
レガシーとAPIに制限されている場合はjava.util.Calendar
、タイムスタンプが秒ではなくミリ秒で解釈されることを考慮する必要があります。したがって、最初に1000を掛けて、ミリ秒単位のタイムスタンプを取得する必要があります。
long seconds = 1320105600;
long millis = seconds * 1000;
このようにして、のコンストラクターにフィードしjava.util.Date
、最後にを使用して、必要に応じて事前定義されたタイムゾーンで希望の日付形式パターンにSimpleDateFormat
変換できます(そうでない場合は、システムのデフォルトのタイムゾーンを使用します。これはGMT/UTCではありません。したがって、フォーマットされた時刻がずれている可能性があります)。java.util.Date
java.lang.String
Date date = new Date(millis);
SimpleDateFormat sdf = new SimpleDateFormat("EEEE,MMMM d,yyyy h:mm,a", Locale.ENGLISH);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
String formattedDate = sdf.format(date);
System.out.println(formattedDate); // Tuesday,November 1,2011 12:00,AM
すでにJava8LocalDateTime#ofEpochSecond()
を使用している場合は、ミリ秒フレーバーに乗算することなく、エポック秒を直接フィードできるaがあります。
LocalDateTime dateTime = LocalDateTime.ofEpochSecond(seconds, 0, ZoneOffset.UTC);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE,MMMM d,yyyy h:mm,a", Locale.ENGLISH);
String formattedDate = dateTime.format(formatter);
System.out.println(formattedDate); // Tuesday,November 1,2011 12:00,AM
long yourSeconds = 1320105600L;
Date date = new Date(yourSeconds * 1000);
詳細については、このjavadocを参照してください。コンストラクターにはミリ秒が必要です。
この日付を適切な形式で表示するには、DateFormatを確認する必要があります
次に例を示します。
DateFormat df = new SimpleDateFormat("dd MMM yyyy hh:mm:ss zzz");
System.out.println(df.format(date));
BalusC による回答は、java.timeの使用を示しているという点で優れています。しかし、その回答では、より適切なLocalDateTime
場所を使用しています。Instant
ALocalDateTime
は、意図的にUTC からのオフセットやタイム ゾーンの概念がないため、タイムライン上の瞬間ではありません。
java.timeフレームワークは、Java 8 以降に組み込まれています。java.util.Date
これらのクラスは、 、.Calendar
、 &などの古い面倒な日時クラスに取って代わりますjava.text.SimpleDateFormat
。Joda -Timeチームは、java.time への移行についてもアドバイスしています。
詳細については、 Oracle チュートリアルを参照してください。また、Stack Overflow で多くの例と説明を検索してください。
java.time 機能の多くは、ThreeTen-Backportで Java 6 および 7 にバックポートされ、さらにThreeTenABPで Android に適合されています。
Instant
ナノ秒までの解像度を持つUTCのタイムライン上の瞬間は、クラスによって表されます。Instant
Instant instant = Instant.ofEpochSecond ( 1_320_105_600L );
コンソールにダンプします。入力値は、UTCで 2011 年 11 月 1 日の最初の瞬間です。末尾のZ
は「Zulu」の略で、UTC を意味します。
System.out.println ( "instant: " + instant );
インスタント: 2011-11-01T00:00:00Z
ZonedDateTime
America/Chicago
あなたのコメントでは、タイムゾーンのレンズを通してこの日時を見たいと述べています。適切なタイムゾーン名を使用してください。タイムゾーン を適用しZoneId
てオブジェクトを取得しZonedDateTime
ます。シカゴはその日付で UTC から 5 時間遅れていることがわかります。
ZoneId zoneId = ZoneId.of ( "America/Chicago" );
ZonedDateTime zdt = instant.atZone ( zoneId );
zdt: 2011-10-31T19:00-05:00[アメリカ/シカゴ]
上記の文字列は、標準のISO 8601形式です。他の形式で文字列を生成するには、DateTimeFormatter
クラスを使用します。独自のカスタム パターンを指定できます。Locale
しかし、一般的には、オブジェクトにエンコードされた人間の言語と文化的規範に java.time を自動的にローカライズさせるのが最善です。
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime ( FormatStyle.FULL );
formatter = formatter.withLocale ( Locale.US );
String output = zdt.format ( formatter );
2011 年 10 月 31 日月曜日午後 7:00:00 CDT
独自のカスタム形式を指定するには、スタック オーバーフローで多くの例と詳細な説明を検索してください。
int seconds = 1320105600;
Date date = new Date(seconds * 1000);
SimpleDateFormat sdf = new SimpleDateFormat("EEEE,MMMM d,yyyy h:mm,a");
System.out.println(sdf.format(date));
秘訣は、使用java.util.Date
しjava.text.DateFormat
て、必要な形式を取得することです。Web上のチュートリアルでその方法を調べることができます。