【问题标题】:Display post time according to timezone name (yii)根据时区名称显示发布时间(yii)
【发布时间】:2016-01-06 08:01:35
【问题描述】:

我正在开发一个社交应用程序,我想根据用户的位置时区显示发布时间。我使用了像 Asia/Calcutta 这样的时区。现在我想如果有人从美国发帖,那么我应该根据 Asia/Calcutta 时区获取日期。 在config.php我设置了

  $timzone=isset($_COOKIE['goalsurf_timezone'])? $_COOKIE['goalsurf_timezone'] : 'America/Los_Angeles';
date_default_timezone_set($timzone);

我有一个函数:

function gplustime($date)
{
    $time=strtotime($date);
    $dt = new DateTime("now", new DateTimeZone($this->timezon)); //first argument "must" be a string
    $dt->setTimestamp($time); //adjust the object to correct timestamp
    return $dt->format(yii::app()->params['dateformat'].' h:i A');
}

在数据库中,日期是根据用户的位置保存的。但是当我显示该日期时,它显示的是数据库中的日期。请帮忙

更新 也试过这个:

function gplustime($date)
{
    $date = new DateTime($date, new DateTimeZone($this->timezon));
    return $date->format(yii::app()->params['dateformat'].' h:i A');
}

【问题讨论】:

    标签: php date datetime yii timezone


    【解决方案1】:

    最好的方法是对存储在数据库中的所有日期时间使用相同的时区,例如UTC 并在渲染时将其转换为查看者的时区:

    $dt = new \DateTime($dateFromTheDB, new \DateTimeZone('UTC'));
    $dt->setTimeZone(new \DateTimeZone($viewerTimeZone));
    return $dt->format(yii::app()->params['dateformat'].' h:i A');
    

    【讨论】:

      【解决方案2】:

      Yii 论坛可能对你有所帮助

      http://www.yiiframework.com/forum/index.php/topic/63546-sql-serverimplicit-conversion-from-data-type-varchar-to-varbinarymax-is-not-allowed-use-the-convert-function-to-run-this-query/

      同样在 sql 中,您使用 CONVERT_TZ 函数根据时区更改日期时间。

      SELECT `groupId`, CONVERT(`name`, CHAR(255)) as `name`, `image`, `type`, `status`, CONVERT_TZ(`addedDate`,'-6:00','".$zone."') as `addedDate` FROM `msg_user_group` WHERE `groupId` = 1;
      

      在这个 sql 查询中,我使用 CONVERT 和 CONVERT_TZ Convert 更改列数据类型和 CONVERT_TZ 将日期时间更改为一个时区到另一个时区

          CONVERT_TZ(`addedDate`,'-6:00','".$zone."')
      'addedDate' => field name
      '-6:30' => my current time zone
      '$zone' => here put your timezone in which datetime format is change
      
      
      SELECT `groupId`, CONVERT(`name`, CHAR(255)) as `name`, `image`, `type`, `status`, CONVERT_TZ(`addedDate`,'-6:00','+5:30') as `addedDate` FROM `msg_user_group` WHERE `groupId` = 1;
      

      在这个 sql 查询中,我将时区从 -6:00 更改为 +5:30

      【讨论】:

      • 不需要这样做。只需将您的默认日期设置为 PST 并使用此 codingbin.com/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      相关资源
      最近更新 更多