Что не так? Я предполагаю, что если я вычитаю 1 мс с 1 января 1980 года 0: 0: 0, то у меня есть 1979. Но для этого я должен вычесть около 500 + мс. Пожалуйста, дайте мне подсказку.Вычитание 1 мсек приводит к неожиданному поведению
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 !!!
Обновлено.
Решение
val cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"))
cal.setTimeInMillis(0)
cal.set(1980, 0, 1, 0, 0, 0)
Просто догадаться, но, возможно, внутренне календарь округляет секунды? – Aaron
Попробуйте распечатать содержимое «даты» после первого вызова 'setTime()'. Возможно, год, месяц, день, час, минута и секунда - это значение, которое вы установили, но не миллисекунды. –
Немного смущает. Я не хочу использовать Yoda Time или другую библиотеку третьей части. Мне нужно преобразовать год, месяц, день в миллисекунды, а затем получить последнюю миллисекунду дня. Я хочу найти правильное решение для этого. К сожалению, Джавадок молчал о такой ситуации. – Ezhik