私はこの質問が何度も尋ねられるのを見ましたが、答えはどれも私が必要とするものではないようです。
エポック時間が保存されているlong型の変数があります。
私がやりたいのは、それを文字列に変換することです
たとえば、保存されたエポック時間が今日の場合、最終的な文字列は次のようになります。
17/03/2012
これはどうすればいいですか?
SimpleDateFormat を調べます
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
sdf.format(new Date(myTimeAsLong));
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);
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を掛けてください
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内で使用されるため一般的です。しかし、少なくとも カップルダースのエポック定義 がさまざまなコンピューターシステムで使用されることに注意してください。
これを試して
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);
システムのデフォルトのLocale
とTimeZone
...を渡しながら、以前の回答に基づいて.
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));
}
誰かが最新の回答を提供する時間(2014年以降有効かつ推奨されています)。
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
スニペットを使用して、タイムゾーン、言語(ロケール)、および必要な形式の長さまたは短さを指定できることに注意してください。
Javaのエポック時間はミリ秒単位であり、変換しているものは秒単位である可能性があります。変換の両側がミリ秒単位であることを確認してから、 Dateオブジェクトの日付パラメーター。
これを試して...
サンプルエポックタイムスタンプは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ファイルをダウンロードしてください)