2016-08-03 13 views
0

これはおそらく非常に単純な問題ですが、現在の日をミリ秒単位で取得したいと思います。すなわち、今日の真夜中のUnixタイムスタンプ。Javaでミリ秒単位で現在の日を取得する

long time = System.currentTimeMillis() - new DateTime().millisOfDay().getMillis; 

しかし、これを簡単にする方法はありますか?同様に、これを行う方法は減算せずに1行ですか?

+1

は、[この](http://stackoverflow.com/questions/38607864/how-can-i-getを見てください - 真夜中から与えられた瞬間から);明日の真夜中を尋ねていることは無視してください。答えは "今日の真夜中"を得る方法を教えてくれます。ただし、深夜ではなく、1日の始まりを使用する必要があります。深夜は必ずしも存在しないことに注意してください。 –

+0

@AndyTurner私はそれに少し興味をそそられています...いつ真夜中は存在しないのですか? DSTとうるう年/秒は干渉しません。 – Sneftel

+3

@Sneftelアジア/ガザは2016年3月26日に真夜中を過ぎません.DSTは深夜に始まるため、1時に直進します。 –

答えて

3

あなたはこのようにする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 
1

カレンダーで次のようにあなたが行うことができます。

Calendar date = Calendar.getInstance(); 
long millisecondsDate = date.getTimeInMillis(); 

よろしく。

0

同じようにシンプル:

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(); 
関連する問題