我正在开发社交应用,我希望根据用户的位置时区显示帖子的时间。我使用了像亚洲/加尔各答这样的时区。现在我想如果有人从美国发帖,那么我应该根据亚洲/加尔各答时区获取约会。
在<color name="common_signin_btn_dark_text_pressed">SomeColorValue(Hash Code)</color>
我设置了
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');
}
答案 0 :(得分:1)
最好的方法是对数据库中存储的所有日期时间使用相同的时区,例如: UTC并在渲染时将其转换为查看者的时区:
$dt = new \DateTime($dateFromTheDB, new \DateTimeZone('UTC'));
$dt->setTimeZone(new \DateTimeZone($viewerTimeZone));
return $dt->format(yii::app()->params['dateformat'].' h:i A');
答案 1 :(得分:0)
Yii论坛可能会帮助您
同样在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_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