「12-December-2012」のような文字列の中に日付があります。これをミリ秒に変換するにはどうすればよいですか?
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();
}
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("12-December-2012");
long mills = date.getTime();
SimpleDateFormat
を解析し、String
クラスとDate
クラスのgetTime
メソッドを返すことができるDate
クラスを見てください。
誰かがこの質問に現代的な答えを提供する時期です。質問が行われた2012年に、当時投稿された回答も良い回答でした。 2016年に投稿された回答でも、古くて古くなったクラスSimpleDateFormat
とDate
を使用する理由は、もう少し謎です。 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のロケール設定を使用しますが、これは多くの場合に機能し、異なるロケール設定のデバイスでアプリを実行すると、ある日予期せず失敗します。
simpleDateFormatを使用して、文字列の日付を解析できます。
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();
}
}
詳細例クリック ここ