web-dev-qa-db-ja.com

文字列の日付を長いミリ秒に変換する方法

「12-December-2012」のような文字列の中に日付があります。これをミリ秒に変換するにはどうすればよいですか?

77
Dawood Abbasi

SimpleDateFormat の使用

String string_date = "12-December-2012";

SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
try {
    Date d = f.parse(string_date);
    long milliseconds = d.getTime();
} catch (ParseException e) {
    e.printStackTrace();
}
132
Jon Lin
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("12-December-2012");
long mills = date.getTime();
15
Ram kiran

SimpleDateFormatを解析し、StringクラスとDateクラスのgetTimeメソッドを返すことができるDateクラスを見てください。

9
Averroes
  • 最初に日付を使用して文字列をJava.util.Dateに変換します formatter
  • getTime() を使用して、日付からミリ秒のカウントを取得します
7
Dmitriy Tarasov

誰かがこの質問に現代的な答えを提供する時期です。質問が行われた2012年に、当時投稿された回答も良い回答でした。 2016年に投稿された回答でも、古くて古くなったクラスSimpleDateFormatDateを使用する理由は、もう少し謎です。 Java.timeは、JSR-310としても知られている最新のJava日時APIです。 ThreeTenABPを介してAndroidで使用できます。 この質問:Android ProjectでThreeTenABPを使用する方法 を参照してください。

ほとんどの場合、1日の始まりのエポック以降のミリ秒を使用することをお勧めしますin UTC。これらを入手するには:

    DateTimeFormatter dateFormatter
            = DateTimeFormatter.ofPattern("d-MMMM-uuuu", Locale.ENGLISH);
    String stringDate = "12-December-2012";
    long millisecondsSinceEpoch = LocalDate.parse(stringDate, dateFormatter)
            .atStartOfDay(ZoneOffset.UTC)
            .toInstant()
            .toEpochMilli();
    System.out.println(millisecondsSinceEpoch);

これは印刷します:

1355270400000

特定のタイムゾーンで1日の始まりの時刻が必要な場合は、UTCではなくそのタイムゾーンを指定します。次に例を示します。

            .atStartOfDay(ZoneId.of("Asia/Karachi"))

予想どおり、これはわずかに異なる結果をもたらします。

1355252400000

別の注意点として、DateTimeFormatterにロケールを指定することを忘れないでください。 12月に英語になりましたが、その月が同じと呼ばれる他の言語もありますので、自分で適切なロケールを選択してください。ロケールを指定しなかった場合、フォーマッタはJVMのロケール設定を使用しますが、これは多くの場合に機能し、異なるロケール設定のデバイスでアプリを実行すると、ある日予期せず失敗します。

7
Ole V.V.

simpleDateFormatを使用して、文字列の日付を解析できます。

3
XepterX

simpledateformatを使用すると、簡単に実現できます。

1)まず、simpledateformatterを使用して文字列をJava.Dateに変換します。

2)getTimeメソッドを使用して、日付からミリ秒のカウントを取得します

 public class test {
      public static void main(String[] args) {
      String currentDate = "01-March-2016";
      SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
     Date parseDate = f.parse(currentDate);
     long milliseconds = parseDate.getTime();
  }
        }

詳細例クリック ここ

0
Ankit jain