web-dev-qa-db-ja.com

エポック時間から日付文字列への変換

私はこの質問が何度も尋ねられるのを見ましたが、答えはどれも私が必要とするものではないようです。

エポック時間が保存されているlong型の変数があります。

私がやりたいのは、それを文字列に変換することです

たとえば、保存されたエポック時間が今日の場合、最終的な文字列は次のようになります。

17/03/2012

これはどうすればいいですか?

24
nexus490

SimpleDateFormat を調べます

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
sdf.format(new Date(myTimeAsLong));
33
Reinard

Dateからlongを作成します-簡単です:

Date date = new Date(epochTime);

ここでepochTimeはエポック以降のミリ秒単位である必要があることに注意してください。エポック以降secondsがある場合は、1000倍してください。

次に、関連するパターン、カルチャ、およびタイムゾーンを指定するSimpleDateFormatを作成します。例えば:

SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy", Locale.US);
format.setTimeZone(...);

次に、それを使用して日付を文字列にフォーマットします。

String text = format.format(date);
23
Jon Skeet
Date date = new Date(String); 

これは非推奨です。

溶液

  Date date = new Date(1406178443 * 1000L);
  DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
  format.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
  String formatted = format.format(date);

必ず1000Lを掛けてください

17
Damith Ganegoda

ジョーダタイム

Epoch時間までに、UTCで1970年の最初の瞬間からミリ秒のカウントを意味する場合、Joda-Timeライブラリを使用したコードの例を次に示します…

DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );
DateTime dateTime = new DateTime( yourMilliseconds, timeZone );
String output = DateTimeFormat.forStyle( "S-" ).withLocale( Locale.CANADA_FRENCH ).print( dateTime );

その他のエポック

エポックのその定義は、Unix内で使用されるため一般的です。しかし、少なくとも カップルダースのエポック定義 がさまざまなコンピューターシステムで使用されることに注意してください。

2
Basil Bourque

これを試して

Date date = new Date(1476126532838L);
DateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
format.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
String formatted = format.format(date);
format.setTimeZone(TimeZone.getTimeZone("Asia/Colombo"));//your zone
formatted = format.format(date);
System.out.println(formatted);

システムのデフォルトのLocaleTimeZone...を渡しながら、以前の回答に基づいて.

String epochToIso8601(long time) {
    String format = "yyyy-MM-dd HH:mm:ss";
    SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.getDefault());
    sdf.setTimeZone(TimeZone.getDefault());
    return sdf.format(new Date(time * 1000));
}
0
Martin Zeitler

誰かが最新の回答を提供する時間(2014年以降有効かつ推奨されています)。

Java.time

    DateTimeFormatter formatter = DateTimeFormatter
            .ofLocalizedDateTime(FormatStyle.LONG).withLocale(Locale.US);

    String facebookTime = "1548410106047";
    long fbt = Long.parseLong(facebookTime);
    ZonedDateTime dateTime = Instant.ofEpochMilli(fbt).atZone(ZoneId.of("America/Indiana/Knox"));
    System.out.println(dateTime.format(formatter));

出力は次のとおりです。

2019年1月25日午前3時55分6秒(CST)

日付のみを短い形式で使用する場合は、たとえば

    DateTimeFormatter formatter = DateTimeFormatter
            .ofLocalizedDate(FormatStyle.SHORT).withLocale(Locale.US);

1/25/19

スニペットを使用して、タイムゾーン、言語(ロケール)、および必要な形式の長さまたは短さを指定できることに注意してください。

リンク集

0
Ole V.V.

Javaのエポック時間はミリ秒単位であり、変換しているものは秒単位である可能性があります。変換の両側がミリ秒単位であることを確認してから、 Dateオブジェクトの日付パラメーター。

0
Ajibola

これを試して...

サンプルエポックタイムスタンプは1414492391238です

方法:

public static String GetHumanReadableDate(long epochSec, String dateFormatStr) {
    Date date = new Date(epochSec * 1000);
    SimpleDateFormat format = new SimpleDateFormat(dateFormatStr,
            Locale.getDefault());
    return format.format(date);
}

使いやすさ:

long timestamp = Long.parseLong(engTime) / 1000;
String engTime_ = GetHumanReadableDate(timestamp, "dd-MM-yyyy HH:mm:ss aa");

結果:

28-10-2014 16:03:11 pm

ハッピーコーディング

ArLiteDTMConvユーティリティは、EPOUCH-UNIXの日時値、フォームEPOUCH-UNIX-To-Date-formatおよびVise-Versaの変換に役立ちます。結果を変数に設定し、スクリプトで変数を使用するか、パラメーターとして渡すか、WindowとLinuxの両方のDB基準に導入することができます。 (このリンクからZipファイルをダウンロードしてください)

0
Ali Musa