web-dev-qa-db-ja.com

エポックの日付形式を変換する

次のような日付形式の文字列があります

Jun 13 2003 23:11:52.454 UTC

エポックに変換したいミリ秒を含む... Javaこの変換に使用できるユーティリティはありますか?

52
user804979

このコードは、ストリングから 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()は、エポック時間をミリ秒単位で返します。

91
Bohemian

新しい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 を作成して、そこから目的のエポック時間を抽出できます。

主な利点は、スレッドセーフになったことです。

バジルブルクの発言と提案に感謝します。詳細については、彼の答えを読んでください。

22
Ortomala Lokni

文字列を日付形式に変換する共通メソッドを作成

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;
}
0
user1960808
  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を取得できます リンク

0
Flash