как можно изменить (американское / Чикагское) время на индийское (азиатское / Калькуттское) время

#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. какой-то студент дал правильный ответ Бартек Рудник и аалам зее