2つの文字列があります
String date = "9/13/2012";
String time = "5:48pm";
時間は GMT+0 です。GMT+8 に変更したいのですが、時間を特定のタイムゾーンに変更する最も簡単な方法は何ですか?
SimpleDateFormat
UTCタイムゾーンへのセットを使用して解析しますDate
値をフォーマットSimpleDateFormat
します。例えば:
SimpleDateFormat inputFormat = new SimpleDateFormat("MM/dd/yyyy h:mma", Locale.US);
inputFormat.setTimeZone(TimeZone.getTimeZone("Etc/UTC");
Date date = inputFormat.parse(date + " " + time);
// Or whatever format you want...
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.US);
outputFormat.setTimeZone(targetTimeZone);
String outputText = outputFormat.format(date);
(代わりにJoda Timeを使用できれば、それは素晴らしいことですが、Android アプリとしてはかなり大きいことは理解しています。)
Joda-Time ライブラリは、複数のタイム ゾーンで日付/時刻を操作するための優れたオブジェクト セットを提供します。http://joda-time.sourceforge.net/
たとえば、次のようなものです。
String date = "9/13/2012";
String time = "5:48pm";
String[] dateParts = date.split("/");
Integer month = Integer.parseInt(dateParts[0]);
Integer day = Integer.parseInt(dateParts[1]);
Integer year = Integer.parseInt(dateParts[2]);
String[] timeParts = time.split(":");
Integer hour = Integer.parseInt(timeParts[0]);
Integer minutes = Integer.parseInt(timeParts[1].substring(0,timeParts[1].lastIndexOf("p")));
DateTime dateTime = new DateTime(year, month, day, hour, minutes, DateTimeZone.forID("Etc/GMT"));
dateTime.withZone(DateTimeZone.forID("Etc/GMT+8"));