文字列内に「2012年12月12日」のような日付があります。これをミリ秒(long)に変換するにはどうすればよいですか?
文字列内に「2012年12月12日」のような日付があります。これをミリ秒(long)に変換するにはどうすればよいですか?
回答:
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年に質問されたとき、当時投稿された回答も良い回答でした。なぜ答えはまた、長い時代遅れのクラスを使用する2016年に掲示SimpleDateFormat
し、Date
私にはもう少し謎のです。java.time
、JSR-310としても知られている最新のJava日付と時刻APIは、操作が非常に優れています。ThreeTenABPを介してAndroidで使用できます。この質問を参照してください:AndroidプロジェクトでThreeTenABPを使用する方法。
ほとんどの場合、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
特定のタイムゾーンで1日の開始時刻が必要な場合は、UTCではなくそのタイムゾーンを指定します。次に例を示します。
.atStartOfDay(ZoneId.of("Asia/Karachi"))
予想どおり、これによりわずかに異なる結果が得られます。
1355252400000
注意すべきもう1つのポイントは、にロケールを指定することを忘れないでくださいDateTimeFormatter
。私は12月を英語にしたが、その月が同じと呼ばれる他の言語もあるので、自分で適切なロケールを選択してください。ロケールを指定しなかった場合、フォーマッタはJVMのロケール設定を使用します。これは多くの場合に機能する可能性があり、異なるロケール設定のデバイスでアプリを実行すると、ある日予期せず失敗します。
最も簡単な方法は、Date()とgetTime()を使用した日付です。
Date dte=new Date();
long milliSeconds = dte.getTime();
String strLong = Long.toString(milliSeconds);
System.out.println(milliSeconds)
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();
}
}
より多くの例をクリックここに
以下のコードを試してください
SimpleDateFormat f = new SimpleDateFormat("your_string_format", Locale.getDefault());
Date d = null;
try {
d = f.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
long timeInMillis = d.getTime();