#php #timezone
#php #Часовой пояс
Вопрос:
$row['created']
<- переменная возвращает дату / время в базу данных. $row['created'] have time like 2016-10-07 01:31:42 .
и часовой пояс (America/Chicago)
. поэтому я хотел бы показать время в соответствии с индийским часовым поясом. Я использую код, показанный ниже, но он не работает.
$timestamp = strtotime($row['created']);
date_default_timezone_set("Asia/Kolkata");
echo date('r', $timestamp);
Комментарии:
1. Определите «не работает».
Ответ №1:
Попробуйте сохранить этот код как индийское время.
<?php
$date=date_create('2016-10-07 01:26:56',timezone_open("America/Chicago"));
echo date_format($date,"Y-m-d H:i:sP")."<br>";
date_timezone_set($date,timezone_open("Asia/Kolkata"));
$indiatime = date_format($date,"Y-m-d H:i:sP") . "<br>";
echo $indiatime ;
?>
Комментарии:
1. В любое время @MKB. Спасибо.
Ответ №2:
Вы можете использовать класс DateTime. Посмотрите на этот пример документа DateTime.
$date = new DateTime($row['created'], new DateTimeZone('America/Chicago'));
echo $date->format('Y-m-d H:i:sP') . "n";
$date->setTimezone(new DateTimeZone('Asia/Kolkata'));
echo $date->format('Y-m-d H:i:sP') . "n";
Это позволит вам переключаться между часовыми поясами.
Ответ №3:
Попробуйте это, используйте timezone_open и date_format
$timestamp = "2016-10-07 01:31:42";
$date = date_create($timestamp, timezone_open('Asia/Kolkata'));
echo date_format($date, 'Y-m-d H:i:sP') . "n"; //echo 2016-10-07 01:31:42 05:30
или
$timestamp = "2016-10-07 01:31:42";
$user_tz = 'Asia/Kolkata';
echo $timestamp. "n"; // echo 2016-10-07 01:31:42
$schedule_date = new DateTime($timestamp, new DateTimeZone($user_tz) );
$schedule_date->setTimeZone(new DateTimeZone('UTC'));
$triggerOn = $schedule_date->format('Y-m-d H:i:s');
echo $triggerOn; // echo 2016-10-06 20:01:42
Ответ №4:
Если вы используете mysql, вы также делаете это:
SELECT CONVERT_TZ(created,'America/Chicago','Asia/Kolkata');
Вместо кодирования на php, когда вы извлекаете данные из базы данных, вы можете использовать следующий запрос: select field1,field2,created from <tablename> where <yourCondition>
. Вместо doinf so обновите свой запрос таким образом:
select field1,field2,CONVERT_TZ(created,'America/Chicago','Asia/Kolkata') from <tablename> where <yourCondition>
Комментарии:
1. Это встроенная функция mysql для преобразования часового пояса: CONVERT_TZ (dt, from_tz, to_tz); используя это, вы можете преобразовать дату по зонам. для получения более подробной информации, пожалуйста, попробуйте эту ссылку :
http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_convert-tz
2. хорошо, спасибо…… Мне не хотелось бы вносить изменения в базу данных …… я хочу изменить время эха…
3. какой-то студент дал правильный ответ Бартек Рудник и аалам зее