Как преобразовать LocalDateTime в java.util.Date без каких-либо «волшебных трюков», доступных в Java (которые становятся для меня все менее и менее забавными)?
Год, месяц и день верны (1 января 1900 г.), но время почему-то 0:29: 43 (вместо 00:00:00, как я и предполагал).
Ваше время, я полагаю, может отличаться, например, потому, что оно может зависеть от часового пояса.
Код: Выделить всё
import java.util.Date;
import java.time.LocalDateTime;
import java.time.Instant;
import java.time.ZoneId;
public class DateDemo {
public static void main(String[] args) {
Date date = toDate(1900, 1, 1, 0, 0); // must be January 1, 1900. 00:00:00
}
static Date toDate(int year, int month, int day, int hours, int minutes) {
// LocalDateTime appeared a convenient medium, what with its handy factory methods
LocalDateTime localDateTime = LocalDateTime.of(year, month, day, hours, minutes);
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
return Date.from(instant)
}
}
Это работает, но имеет один устаревший вызов (должен быть равен нулю), генерирует в общей сложности два предупреждения и уродлив AF. Таким образом, это неоптимально.
Код: Выделить всё
new Date(localDateTime.getYear() - 1900, localDateTime.getMonth().getValue(), localDateTime.getDayOfMonth(), localDateTime.getHour(), localDateTime.getMinute(), localDateTime.getSecond())
Я проверил их перед публикацией (некоторые из них предлагают одно и то же, нерабочее решение): 1, 2, 3, 4.< /p>
Java 8
Подробнее здесь: https://stackoverflow.com/questions/792 ... hout-magic