Изменения перехода на летнее время, влияющие на преобразование UTC

В вашем коде есть ряд проблем:

button.onclick = display(imgs)

blockquote>

button.onclick следует установить для самой функции, а не для ее значения. об этом, когда он работает на заданном значении. Вместо этого вы можете использовать .bind .

for (let i = 0; i > arr.length; i++){

blockquote>

i начинается с 0, что означает, что оно всегда будет ниже arr.length, и поэтому этот цикл никогда не будет выполняться. [1127 ]

i.src = ...

blockquote>

i - это переменная, содержащая число, а не изображение с индексом i. Вы, вероятно, хотите использовать здесь imgs[i], который ссылается на изображение №. i.


Это один из способов применения предложенных выше исправлений:

const dice1 = document.getElementById('dice1');
const dice2 = document.getElementById('dice2');
const dice3 = document.getElementById('dice3');
const dice4 = document.getElementById('dice4');
const dice5 = document.getElementById('dice5');
const dice6 = document.getElementById('dice6');
const button = document.getElementById('button');

const imgs = [dice1, dice2, dice3, dice4, dice5, dice6];

let pics = ['https://i.postimg.cc/MfVDpSmQ/Eagle.jpg', 
    'https://i.postimg.cc/QKGQPzZx/Man.jpg', 
    'https://i.postimg.cc/1g7MWMzf/Dog.jpg', 
    'https://i.postimg.cc/xc9HzM07/Telephone.jpg', 
    'https://i.postimg.cc/4mwcbyy3/Robot.jpg', 
    'https://i.postimg.cc/ctRRNcd7/Moon.jpg', 
    'https://i.postimg.cc/xJW5QCMQ/Dinosaur.jpg',
    'https://i.postimg.cc/hhdMrLRt/Fish.jpg', 
    'https://i.postimg.cc/Ty1JWmcG/Flowers.jpg'];


const display = () => {
    for (let i = 0; i < imgs.length; i++) {
        imgs[i].src = pics[Math.floor(Math.random() * pics.length)]
    }
};

button.onclick = display;







Редактировать: чтобы избежать повторения одного и того же изображения, используйте .splice после вычисления случайного индекса изображения (как предложено @CertainPerformance):

[ 112]






9
задан Malik Daud Ahmad Khokhar 21 October 2008 в 02:40
поделиться

5 ответов

Это будет зависеть, на которой версии.NET Вы используете и возможно какую версию Windows Вы используете..NET 3.5 имеет класс TimeZoneInfo, который включает исторические изменения и т.д. - к тому времени, поддержка была намного более неоднородной, к сожалению.

3
ответ дан 3 November 2019 в 05:39
поделиться

Я ожидал бы ToUniversalTime() принимать это во внимание. Вы попробовали и проверили результат с датами до и после изменения DST?

Править

Если Вы знаете смещение часового пояса всех дат в Вашем DB, я окончательно рекомендую Вам преобразовать их в UTC на уровне таблицы. Вы избавляетесь от большого количества головных болей тот путь. Преобразование в местное время в целях дисплея легче.

1
ответ дан 3 November 2019 в 05:39
поделиться

Это зависит от того, как информация хранится в базе данных.

Хотелось бы надеяться, данные в дб содержат смещение UTC, и если так, любые изменения в правилах перехода на летнее время будут не важны.

Если смещение UTC не известно затем, фактически невозможно знать, как преобразовать его в UTC. Например, если бы время хранится как целое число без метаданных затем, система должна была бы знать, когда это было добавлено к дб, чтобы смочь выяснить соответствующую метку времени UTC.

1
ответ дан 3 November 2019 в 05:39
поделиться

я очень не хочу сказать это, но Вы завинчены. Стисните зубы и измените даты в базе данных к UTC, прежде чем проблема станет немного хуже. Ваш код станет кошмаром математики даты особого случая в два счета, если Вы продолжите пытаться сохранить местное время в базе данных.

компромисс: сохраните и местное время и время UTC в отдельных столбцах; по крайней мере затем у Вас будет ссылка

см. это сообщение по большему количеству причин никогда не сохранить времена дб в местное время

1
ответ дан 3 November 2019 в 05:39
поделиться

Посмотрим, поможет ли http://geekswithblogs.net/ewright/archive/2004/09/14/11180.aspx вам вообще.

0
ответ дан 3 November 2019 в 05:39
поделиться