2

重複の可能性:
JavaでUTCまたはGMTで現在の日付と時刻を取得するにはどうすればよいですか?

GMTで現在のタイムスタンプを取得したい。それを行う方法はありますか?


私はなんとかgmt形式の文字列を取得できました。問題は、この文字列を同等のタイムスタンプオブジェクト、つまり同じ時間にタイムスタンプオブジェクトとして変換したいということです。

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzz");
        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
        Date date=new Date();
        String s=sdf.format(date);
        System.out.println("GMT: "+s);
        //need to convert the string to equivalent timestamp object
4

2 に答える 2

5
new Date().getTime();

あるいは単に

System.currentTimeMillis();

どちらも、「タイムスタンプ」を「Unixエポックからのミリ秒」を意味すると想定しています。それ以外の場合は、質問を明確にしてください。

編集:コメント/説明/「回答」に応じて:

GMT タイムスタンプを保存することと、それを表示することの違いを誤解しています。タイムスタンプはタイムゾーンに関係なく同じであるため、日付/タイムスタンプは内部的に UTC エポックからミリ秒単位で保存され、特定のタイムゾーンとは関係ありません。ホノルルで午後 10 時であれば、ニューヨークでも午後 10 時です。タイムスタンプは同じですが、場所によってレンダリングが異なる場合があります。

一方、カレンダーは特定のフィールドを適切に表示するためのものであり (6 月 8 日の午後 6 時など)、 TimeZone の内部概念があります(東部夏時間の午後 6 時は太平洋夏時間の午後 6 時と同じではないため)。

とにかく、あなたの例は SimpleDateFormat を与えました。既に GMT のタイムスタンプを GMTで表示したい場合は、同じことを行い、タイムスタンプを渡します。

    Timestamp timestamp = new Timestamp(System.currentTimeMillis());
    SimpleDateFormat fmt = new SimpleDateFormat("HH:mm:ss.SS");
    fmt.setTimeZone(TimeZone.getTimeZone("GMT"));
    System.out.println(fmt.format(timestamp));
于 2010-06-08T20:36:33.390 に答える
1
new Date()

...すべての Date オブジェクトは GMT ベースであるため。

于 2010-06-08T20:40:30.377 に答える