次のような日付形式の文字列があります
Jun 13 2003 23:11:52.454 UTC
エポックに変換したいミリ秒を含む... Javaこの変換に使用できるユーティリティはありますか?
このコードは、ストリングから Java.text.SimpleDateFormat を使用して Java.util.Date を解析する方法を示しています。
_String str = "Jun 13 2003 23:11:52.454 UTC";
SimpleDateFormat df = new SimpleDateFormat("MMM dd yyyy HH:mm:ss.SSS zzz");
Date date = df.parse(str);
long Epoch = date.getTime();
System.out.println(Epoch); // 1055545912454
_
Date.getTime()
は、エポック時間をミリ秒単位で返します。
新しいJava 8 API
import Java.time.ZonedDateTime;
import Java.time.format.DateTimeFormatter;
public class StackoverflowTest{
public static void main(String args[]){
String strDate = "Jun 13 2003 23:11:52.454 UTC";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMM dd yyyy HH:mm:ss.SSS zzz");
ZonedDateTime zdt = ZonedDateTime.parse(strDate,dtf);
System.out.println(zdt.toInstant().toEpochMilli()); // 1055545912454
}
}
DateTimeFormatter
クラスは、古い SimpleDateFormat
を置き換えます。次に、 ZonedDateTime
を作成して、そこから目的のエポック時間を抽出できます。
主な利点は、スレッドセーフになったことです。
バジルブルクの発言と提案に感謝します。詳細については、彼の答えを読んでください。
文字列を日付形式に変換する共通メソッドを作成
public static void main(String[] args) throws Exception {
long test = ConvertStringToDate("May 26 10:41:23", "MMM dd hh:mm:ss");
long test2 = ConvertStringToDate("Tue, Jun 06 2017, 12:30 AM", "EEE, MMM dd yyyy, hh:mm a");
long test3 = ConvertStringToDate("Jun 13 2003 23:11:52.454 UTC", "MMM dd yyyy HH:mm:ss.SSS zzz");
}
private static long ConvertStringToDate(String dateString, String format) {
try {
return new SimpleDateFormat(format).parse(dateString).getTime();
} catch (ParseException e) {}
return 0;
}
String dateTime="15-3-2019 09:50 AM" //time should be two digit like 08,09,10
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd-MM-yyyy hh:mm a");
LocalDateTime zdt = LocalDateTime.parse(dateTime,dtf);
LocalDateTime now = LocalDateTime.now();
ZoneId zone = ZoneId.of("Asia/Kolkata");
ZoneOffset zoneOffSet = zone.getRules().getOffset(now);
long a= zdt.toInstant(zoneOffSet).toEpochMilli();
Log.d("time","---"+a);
これからゾーンIDを取得できます リンク !