#java
Класс Date в Java может возвращать время в миллисекундах, а из какой timezone он
возвращает, текущей или из UTC?
Ответы
Ответ 1
Объект Data возвращает вам системное время вашей машины и только. Можно программно изменить время на машине. Date dataCurrent=new Date(); System.out.println(dataCurrent); TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles")); Date dataNewZone=new Date(); System.out.println(dataNewZone); Вывод программы Wed Sep 21 17:47:40 MSK 2016 Wed Sep 21 07:47:40 PDT 2016 Время в милисекундах одинаково для всех часовых поясов.Ответ 2
Местное. (То что на твоем ПК) Сейчас за это отвечает другой класс - CalendarОтвет 3
Объект Data возвращает вам системное время вашей виртуальной машины. Т.е , раскрывая вопрос полностью, время с учетом вашей таймзоны. Локальное системное время (системное время) Локальное системное время получается путем прибавления к временем по Гринвичу указанных в часовом поясе системы значений разности с временем по Гринвичу и разности лет. Системное значение времени суток содержит именно локальное системное время. Понятия системного времени и локального системного времени эквивалентны. Проверить данное утверждение Вы можете вызвав System.out.println(Calendar.getInstance().getTime()); И раскопав в src как реализован данный метод... UPD В ответ на комментарий автора. офф. документация обратите внимание на следующие строчки: Although the Date class is intended to reflect coordinated universal time (UTC), it may not do so exactly, depending on the host environment of the Java Virtual Machine. Nearly all modern operating systems assume that 1 day = 24 × 60 × 60 = 86400 seconds in all cases. In UTC, however, about once every year or two there is an extra second, called a "leap second." The leap second is always added as the last second of the day, and always on December 31 or June 30. For example, the last minute of the year 1995 was 61 seconds long, thanks to an added leap second. Most computer clocks are not accurate enough to be able to reflect the leap-second distinction. помимо интересной информации о второй поправке времени.Вы можете обнаружить что объект типа Date предоставляет Вам время в формате Coordinated Universal Time...Ответ 4
java.util.Date не хранит информацию о временной зоне, всегда используется только текущая временная зона, которая берётся из OC. Если нужно хранить значение временной зоны, то следует использовать класс java.util.Calendar см. setTimeZone(TimeZone value) и getTimeZone()
Комментариев нет:
Отправить комментарий