StrDate = "2011-07-19T18:23:20 + 0000";
Androidで上記の日付形式のエポックタイムを取得するにはどうすればよいですか?
また、エポックタイムを上記の日付形式に変換する方法を知りたいです。
例を挙げて直接回答をいただければ幸いです。
StrDate = "2011-07-19T18:23:20 + 0000";
Androidで上記の日付形式のエポックタイムを取得するにはどうすればよいですか?
また、エポックタイムを上記の日付形式に変換する方法を知りたいです。
例を挙げて直接回答をいただければ幸いです。
Joda-Time2.3を使用したサンプルコード。
Unix時間は、UTC/GMTで1970年の初めからの秒数です。
Androidで上記の日付形式のエポックタイムを取得するにはどうすればよいですか?
DateTime dateTimeInUtc = new DateTime( "2011-07-19T18:23:20+0000", DateTimeZone.UTC );
long secondsSinceUnixEpoch = ( dateTimeInUtc.getMillis() / 1000 ); // Convert milliseconds to seconds.
…そして…</p>
エポックタイムを上記の日付形式に変換する方法。
String dateTimeAsString = new DateTime( secondsSinceUnixEpoch * 1000, DateTimeZone.UTC ).toString();
これらの値をコンソールにダンプするには…</p>
System.out.println( "dateTimeInUtc: " + dateTimeInUtc );
System.out.println( "secondsSinceUnixEpoch: " + secondsSinceUnixEpoch );
System.out.println( "dateTimeAsString: " + dateTimeAsString );
ボーナス:別のタイムゾーンに調整します。
DateTime dateTimeMontréal = dateTimeInUtc.withZone( DateTimeZone.forID( "America/Montreal" ) );
SimpleDateFormatを使用する必要があります。そのクラスは、フォーマットと解析の両方をサポートしています。
サンプルコード:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZZZZ");
Date gmt = formatter.parse("2011-07-19T18:23:20+0000");
long millisecondsSinceEpoch0 = gmt.getTime();
String asString = formatter.format(gmt);
JavaのDateインスタンスは、常にエポック0からのミリ秒をUTC / GMTで表しますが、印刷するときは現地時間で印刷されることに注意してください。
あなたの質問に少し遅れて答えますが、Joda-Timeはシンプルでクリーンな方法で両方を処理することができます。
1.現在までのエポック時間
日付はあなたのエポックタイムです
DateTime dateTime = new DateTime(date*1000L);
System.out.println("Datetime ..." + dateTime);
Datetime from Epoch ...2014-08-01T13:00:00.000-04:00
2.エポックまでの日付
DateTime fromDate = new DateTime("2011-07-19T18:23:20+0000");
long epochTime = fromDate.getMillis();
System.out.println("Date is.." + fromDate + " epoch of date " + epochTime);
Date is..2011-07-19T14:23:20.000-04:00 epoch of date 1311099800000