Вы не можете использовать 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? Если да, отредактируйте или обновите комментарии. Спасибо.
Вы неправильно поняли определение творения. Ваше второе предложение здесь неверно:
Согласно документам создайте «Относится к записи в несуществующие документы». А именно, если документ существует, эту операцию следует отклонить.
blockquote>Правило создания ничего не отклоняет, если документ уже присутствует. Если документ уже присутствует и обновляется, правило создания не применяется вообще. Вместо этого будут применяться любые правила обновления или записи. Если никакие соответствующие правила обновления или записи не разрешают доступ к документу, обновление будет отклонено.