ミリ秒の時間(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に変換してタイムゾーンを変更する方法がわからないため、問題が発生します。
誰かがこれを行う方法を持っているなら、私は助けに感謝します、ありがとう!
以下をお試しください。
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)));
}
}
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));
あなたはこれをチェックするかもしれません。
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()));