95

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

4

9 に答える 9

164

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();
}
于 2012-09-18T08:58:55.817 に答える
17
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("12-December-2012");
long mills = date.getTime();
于 2012-09-18T08:59:49.033 に答える
17

そろそろ誰かがこの質問に対する現代的な答えを提供する時が来ました. 質問が出された2012年に、当時投稿された回答も良い回答でした。2016年に投稿された回答が当時の時代遅れのクラスも使用している理由は、SimpleDateFormatDateにとってもう少し謎です。java.timeは、JSR-310 としても知られる最新の Java の日付と時刻の API であり、非常に使いやすいです。ThreeTenABP を介して Android で使用できます。この質問を参照してください: How to use ThreeTenABP in Android Project .

ほとんどの目的で、UTCでの 1 日の開始時のエポックからのミリ秒を使用することをお勧めします。これらを取得するには:

    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

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

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

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

1355252400000

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

于 2017-11-22T07:45:55.697 に答える
9

SimpleDateFormataを解析して aStringを返すことができるクラスとクラスDategetTimeメソッドを見てくださいDate

于 2012-09-18T08:57:47.227 に答える
7
  • java.util.Date最初に日付フォーマッタを使用して文字列を変換します
  • getTime()を使用して、日付からミリ秒数を取得します
于 2012-09-18T08:59:31.437 に答える
3

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

于 2012-09-18T08:58:32.540 に答える
1

最も簡単な方法は、Date() と getTime() を使用した日付を使用することです

    Date dte=new Date();
    long milliSeconds = dte.getTime();
    String strLong = Long.toString(milliSeconds);
    System.out.println(milliSeconds)
于 2016-02-03T05:49:42.487 に答える