Firestore создает правило безопасности не работает, как ожидалось

Вы не можете использовать strtotime, потому что он создает временную метку UTC, которая удаляет информацию о часовом поясе. Вместо этого просто используйте DateTime

$date = new DateTime('30-Mar-2013 America/Los_Angeles');
echo $date->format('I');
# 1

$date = new DateTime('31-Mar-2013 America/Los_Angeles');
echo $date->format('I');
# 1

$date = new DateTime('09-Mar-2013 America/Los_Angeles');
echo $date->format('I');
# 0

$date = new DateTime('10-Mar-2013 America/Los_Angeles');
echo $date->format('I');
# 0

Обратите внимание, что DST по-прежнему 0 на этом последнем? Это происходит потому, что переход происходит в 2:00 утра:

$date = new DateTime('10-Mar-2013 01:00 America/Los_Angeles');
echo $date->format('I');
# 0

$date = new DateTime('10-Mar-2013 02:00 America/Los_Angeles');
echo $date->format('I');
# 1

Это переход «с пружинным движением», где часы перескакивают с 2:00 до 3:00.

Остерегайтесь двусмысленности во время переходов, когда часы перескакивают с 2:00 до 1:00

$date = new DateTime('3-Nov-2013 01:00 America/Los_Angeles');
echo $date->format('I');
# 1

. Есть два 1:00 AM, и это занимает первое. Это неоднозначно, потому что мы могли бы означать второй, и это не было представлено.

Можно было бы подумать, что PHP допустил бы одно из следующих:

new DateTime('3-Nov-2013 01:00 -0700 America/Los_Angeles')  #PDT
new DateTime('3-Nov-2013 01:00 -0800 America/Los_Angeles')  #PST

Но эти кажется, не работают, когда я тестировал. Я также пробовал даты формата ISO. Кто-нибудь знает, как правильно различать двусмысленные значения в PHP? Если да, отредактируйте или обновите комментарии. Спасибо.

0
задан Doug Stevenson 7 March 2019 в 03:33
поделиться

1 ответ

Вы неправильно поняли определение творения. Ваше второе предложение здесь неверно:

Согласно документам создайте «Относится к записи в несуществующие документы». А именно, если документ существует, эту операцию следует отклонить.

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

0
ответ дан Doug Stevenson 7 March 2019 в 03:33
поделиться
Другие вопросы по тегам:

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