何が問題なのですか?私は、1980年1月1日から1msを引いた場合、0:0:0とすると1979年を得たと仮定します。しかし、これは約500 + msを引く必要があります。私にヒントを与えてください。1msの減算により予期しない動作が発生する
val cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"))
cal.set(1980, 0, 1, 0, 0, 0)
val date = new Date
date.setTime(cal.getTimeInMillis()) // <- 1980 Jan 01 0:0:0
date.setTime(cal.getTimeInMillis() - 1) // <- 1980 Jan 01 0:0:0 too !!!
更新されました。
解決策は何ミリ秒が設定されていないCalendar.set(year, month, day, hourOfDay, minute, second)
で
val cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"))
cal.setTimeInMillis(0)
cal.set(1980, 0, 1, 0, 0, 0)
ちょうど推測だが、おそらく社内のカレンダーは秒を切り上げるだろうか? – Aaron
最初の 'setTime()'呼び出しの後に 'date'コンテンツを表示しようとします。おそらく年、月、日、時、分、秒は設定した値ですが、ミリ秒ではありません。 –
少し混乱します。私はYoda Timeや別の第3部のライブラリを使いたくない。私は、年、月、日をミリ秒に変換し、その日の最後のミリ秒を取得する必要があります。私はこれに対して正しい解を見つけたいと思う。残念ながら、javadocはこのような状況については何も言いません。 – Ezhik