これはおそらく非常に単純な問題ですが、現在の日をミリ秒単位で取得したいと思います。すなわち、今日の真夜中のUnixタイムスタンプ。Javaでミリ秒単位で現在の日を取得する
long time = System.currentTimeMillis() - new DateTime().millisOfDay().getMillis;
しかし、これを簡単にする方法はありますか?同様に、これを行う方法は減算せずに1行ですか?
これはおそらく非常に単純な問題ですが、現在の日をミリ秒単位で取得したいと思います。すなわち、今日の真夜中のUnixタイムスタンプ。Javaでミリ秒単位で現在の日を取得する
long time = System.currentTimeMillis() - new DateTime().millisOfDay().getMillis;
しかし、これを簡単にする方法はありますか?同様に、これを行う方法は減算せずに1行ですか?
あなたはこのようにするJava 8でそれを行うことができます。
ZonedDateTime startOfToday = LocalDate.now().atStartOfDay(ZoneId.systemDefault());
long todayMillis1 = startOfToday.toEpochSecond() * 1000;
またはこのような任意のJavaバージョンで
:Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int date = cal.get(Calendar.DATE);
cal.clear();
cal.set(year, month, date);
long todayMillis2 = cal.getTimeInMillis();
結果を印刷するには、これを使用して:
System.out.println("Today is " + startOfToday);
System.out.println(todayMillis1);
System.out.println(todayMillis2);
ますこの出力を与えてください:
Today is 2016-08-03T00:00-04:00[America/New_York]
1470196800000
1470196800000
カレンダーで次のようにあなたが行うことができます。
Calendar date = Calendar.getInstance();
long millisecondsDate = date.getTimeInMillis();
よろしく。
同じようにシンプル:
GregorianCalendar now = new GregorianCalendar();
GregorianCalendar start = new GregorianCalendar(now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DAY_OF_MONTH));
long ms = now.getTimeInMillis() - start.getTimeInMillis();
か:
GregorianCalendar now = new GregorianCalendar();
long ms = now.getTimeInMillis() - new GregorianCalendar(now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DAY_OF_MONTH)).getTimeInMillis();
は、[この](http://stackoverflow.com/questions/38607864/how-can-i-getを見てください - 真夜中から与えられた瞬間から);明日の真夜中を尋ねていることは無視してください。答えは "今日の真夜中"を得る方法を教えてくれます。ただし、深夜ではなく、1日の始まりを使用する必要があります。深夜は必ずしも存在しないことに注意してください。 –
@AndyTurner私はそれに少し興味をそそられています...いつ真夜中は存在しないのですか? DSTとうるう年/秒は干渉しません。 – Sneftel
@Sneftelアジア/ガザは2016年3月26日に真夜中を過ぎません.DSTは深夜に始まるため、1時に直進します。 –