1

次のコードで-

    Timestamp ts = (Timestamp)results.get(0);
    SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss Z");
    System.out.println(sdf.format(new Date(ts.getTime())));

次のように出力されます: 04/29/2013 15:08:30 +0530

タイムスタンプから TimeZone インスタンスを作成したかったので、これを試しました-

    SimpleDateFormat FORMATTER = new SimpleDateFormat("Z");
    String tzString = FORMATTER.format(ts);

    // the tzString comes out to be +0530 (which is correct)

    TimeZone tz = TimeZone.getTimeZone(tzString);
    System.out.println(tz);

ただし、+0530 を識別できないため、最後の TimeZone インスタンスは GMT です。

では、ここで正しい TimeZone インスタンスを取得するにはどうすればよいでしょうか?

4

4 に答える 4

4

java.sql.Timestamp には TimeZone が含まれていないため、TimeZone を取得することはできません。あなたの場合、単にデフォルトの TimeZone を取得しています。それは意味がありません。TimeZone.getDefault(); と同じです。

于 2013-04-29T09:55:22.210 に答える
2

zパターンでは小文字を使用してください。それは動作するはず"GMT+0530"です。

于 2013-04-29T09:51:28.217 に答える
2

を使用する代わりにSimpleDateFormat、これを簡単に行うことができます:-

Calendar cal = Calendar.getInstance();
cal.setTime(new Date(ts.getTime()));
TimeZone tz = cal.getTimeZone();
System.out.println(tz);
于 2013-04-29T09:52:53.467 に答える
1

以下のコードを試しました:

  Timestamp ts = new Timestamp(System.currentTimeMillis());

次に、タイムスタンプから TimeZone インスタンスを取得するために、次のようにしました。

  SimpleDateFormat FORMATTER = new SimpleDateFormat("Z");
  TimeZone tzone = FORMATTER.getTimeZone();
  System.out.println(tzone.getDisplayName());
  System.out.println(tzone.getID());

私が得た:

Central European Time
Europe/Berlin

そのため、GMT ではなく +0200 のタイムゾーンを取得しました。

これがあなたが望むものであることを願っています。

于 2013-04-29T10:38:39.950 に答える