Неправильное смещение (TimeZone) для новой даты (1900,0,31) на Chrome 67 и выше [дубликат]

Для правильного пути inline вы должны использовать <span> вместо <div>. потому что div является элементом уровня блока, а ваше требование - для элементов уровня встроенного блока.

Вот html-код в соответствии с вашими требованиями:

<div class="main-div">
 <div>foo</div>
 <div>bar</div>
 <div>baz</div>`
</div>

Вы это два способа сделать это


  • , используя простой display:inline-block;
  • или используя float:left;

, чтобы вы чтобы изменить свойство отображения display:inline-block; принудительно

Пример 1

div {
    display: inline-block;
}

Пример два

div {
    float: left;
}

вам нужно очистить float

.main-div:after {
    content: "";
    clear: both;
    display: table;
}
1
задан Mixa 8 June 2018 в 09:41
поделиться

1 ответ

Могут быть только одно объяснение: Вы находитесь в Украине.

Позвольте мне объяснить:

  • При передаче отдельных компонентов в Date, эти значения основаны на локальном часовом поясе компьютера, на котором выполняется код. Помня о том, что месяцы основаны на нуле, new Date(1924,4,1,0,0,0,0) запрашивает местное время 1924-05-01 00:00:00.000 по местному времени .
  • .getTime() запрашивает отметку времени Unix в миллисекундах, которые основаны в UTC - поэтому происходит неявное преобразование с локального времени в UTC. Поэтому каждый, кто запускает этот код, будет получать разные результаты в зависимости от своего собственного часового пояса.
  • Часовые пояса являются относительно современным изобретением. Они не всегда существовали так, как мы их используем сегодня. Данные, хранящиеся в большинстве часовых поясов, поступают из базы данных часовых поясов IANA . В этих данных для большинства часовых поясов самая ранняя запись основана на локальном среднем времени солнечного (LMT) для широты и долготы, связанных с городом, используемым для идентификации часового пояса.
  • В этом случае ваше значение -1441245724000 переводится в 1924-04-30 21:57:56 UTC. Поскольку он был получен из локального времени полуночи, то по математике - смещение от UTC в это локальное время должно быть +02:02:04.
  • Единственный часовой пояс в TZDB со значением LMT +02:02:04 Europe/Kiev, , как показано здесь . По причинам, в которых я точно не уверен, TZDB также назначает аббревиатуру KMT (время по Киеву) с 1880 по 1924 год.

Что касается того, почему вы видите это на более новых версиях Chrome - вполне вероятно, что более старые версии не учитывали весь TZDB, но урезали его в какой-то момент в прошлом. Действительно, стандарт ECMAScript 5.1 использовался, чтобы требовать применения только текущего правила часового пояса, как если бы оно действовало на все время. Это было удалено в ECMAScript 6, и большинство браузеров теперь используют правильное правило, которое действовало для предоставленной метки времени.

TL; DR : Местное время в Украине до 1 мая 1924 года была определена солнцем - не правительством. По крайней мере, это самая известная информация о вашем компьютере.

3
ответ дан Matt Johnson 17 August 2018 в 08:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: