0

2つの文字列があります

String date = "9/13/2012";
String time = "5:48pm";

時間は GMT+0 です。GMT+8 に変更したいのですが、時間を特定のタイムゾーンに変更する最も簡単な方法は何ですか?

4

3 に答える 3

2
  • SimpleDateFormatUTCタイムゾーンへのセットを使用して解析します
  • 関心のあるタイム ゾーンへのセットを使用して、解析された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 アプリとしてはかなり大きいことは理解しています。)

于 2012-09-13T22:45:05.467 に答える
1

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"));
于 2012-09-13T22:44:27.793 に答える