web-dev-qa-db-ja.com

ミリ秒からUTC時間への変換Java

ミリ秒の時間(1970年1月1日からのミリ秒)をJavaのUTCの時間に変換しようとしています。 SimpleDateFormatを使用してタイムゾーンを変更する他の多くの質問を見てきましたが、時間をSimpleDateFormatに取得する方法がわからないので、これまでのところ、文字列または日付に取得する方法しかわかりません。

たとえば、初期時間の値が1427723278405の場合、String date = new SimpleDateFormat("MMM dd hh:mm:ss z yyyy", Locale.ENGLISH).format(new Date (Epoch));またはDate d = new Date(Epoch);を使用して、Mon Mar 30 09:48:45 EDTに取得できますが、 this のようなものを実行するSimpleDateFormat日付または文字列をDateFormatに変換してタイムゾーンを変更する方法がわからないため、問題が発生します。

誰かがこれを行う方法を持っているなら、私は助けに感謝します、ありがとう!

12
kpb6756

以下をお試しください。

package com.example;

import Java.text.SimpleDateFormat;
import Java.util.Date;
import Java.util.TimeZone;

public class TestClient {

    /**
     * @param args
     */
    public static void main(String[] args) {
        long time = 1427723278405L;
        SimpleDateFormat sdf = new SimpleDateFormat();
        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
        System.out.println(sdf.format(new Date(time)));

    }

}
13
Pavan Kumar K

Java.timeオプション

Java 8以降に組み込まれている新しい Java.timeパッケージ を使用できます。

UTCタイムゾーンでのその瞬間に対応する ZonedDateTime を作成できます。

ZonedDateTime utc = Instant.ofEpochMilli(1427723278405L).atZone(ZoneOffset.UTC);
System.out.println(utc);

別の形式が必要な場合は、DateTimeFormatterを使用することもできます。次に例を示します。

System.out.println( DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss").format(utc));
22
assylias

あなたはこれをチェックするかもしれません。

Calendar calendar = new GregorianCalendar();
    calendar.setTimeInMillis(1427723278405L);

    DateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");

    formatter.setCalendar(calendar);

    System.out.println(formatter.format(calendar.getTime()));

    formatter.setTimeZone(TimeZone.getTimeZone("America/New_York"));

    System.out.println(formatter.format(calendar.getTime()));
1
Tariq