У меня есть дата, такая как 30-10-2018 06:00:00 pm
, теперь я хочу преобразовать ее в метку времени UTC, поэтому я пытаюсь преобразовать ее в strtotime
и умножить ее на 1000. Но это привело к разнице в 6 часов в полученной дате
$min_date = "30-10-2018 06:00:00 pm";
$max_date= "30-10-2018 07:00:00 pm";
echo $minDate= strtotime($min_date) * 1000;
echo "<br>";
echo $maxDate= strtotime($max_date) * 1000;
Всего два случайных совета: 1) Опасно полагаться на компьютер, способный отличить американский формат от европейского, когда человек не может, назвать список рискованно. Я предлагаю вам использовать однозначные форматы, такие как 2018-10-30
2) IST, кажется, означает «стандартное ирландское время», «стандартное время Индии» и «стандартное время Израиля». Названия географических часовых поясов, такие как «Европа / Дублин», менее двусмысленны, и PHP принимает их из коробки.
Если мой ответ помог, пожалуйста, примите его, чтобы помочь будущим зрителям этого вопроса.
Вы хотите использовать встроенную функцию PHP, известную как «gmdate.».
Давайте использовать вашу первую метку времени, $min_date
, в нашем примере использования gmdate для преобразования строки даты и времени в метку времени в формате UTC:
$min_date = "30-10-2018 06:00:00 pm";
//Use 'gmdate', which accepts a formatting string and time() values as arguments.
$utc_min_date = gmdate("d-m-Y H:i:s", strtotime($min_date));
echo "<p>Before: ".$min_date."</p>";
//Produces: "Before: 30-10-2018 06:00:00 pm"
echo "<p>UTC: ".$utc_min_date."</p>";
//Produces: "UTC: 30-10-2018 23:00:00"
Если вам нужно чисто числовое представление, подобное метке время(), вы можете просто преобразовать полученную метку времени в формате UTC.
$numerical_utc_min_date = strtotime($utc_min_date);
echo "<p>Numerical UTC timestamp: " . $numerical_utc_min_date . "</p>";
//Produces: "Numerical UTC timestamp: 1540958400"
Возможно, вам следует учитывать часовой пояс, в котором вы находитесь. Посмотрите здесь: stackoverflow.com/questions/32139407/…