我正在创建这篇文章,以确认我正确理解了这个过程,并获得了一些关于解决在各个时区内为用户正确显示和存储的帖子时间问题的一些细节的反馈。
存储时间
第一步是使用javascript函数将用户时区作为GMT偏移格式,并将其存储在会话变量中。例如,$ timezone变量将存储GMT -4
$timezone=$_SESSION['time'];
接下来,一旦我有我的用户时区。当用户发帖时,我将发布时间存储在mysql数据库中,我需要将其存储为UTC格式。我该怎么做呢?目前我存储时间数据。它是以下面的方式。我的邮票字段是日期时间格式,如果可能的话我想保留它。
INSERT INTO posts (stamp) VALUES (now())
我使用什么函数代替now()来获取UTC格式,然后将其插入到我的数据库中?我假设我需要使用PHP函数,它将使用$ timezone来生成UTC日期。
显示时间
接下来,一旦UTC日期存储在数据库中。我需要根据我们设置的$ timezone变量向用户显示数据。
因此,当我显示时间时,我目前正在
echo date('F d', strtotime($list1['stamp']));
一旦我将数据存储为UTC时间,这将显示UTC时间,但我需要向用户显示其时区的UTC偏移量,因此我需要将UTC时间$list['stamp']
转换为使用$ timezone的用户时区。我使用什么功能?
TL:博士 这应该是我需要做的所有工作。如果您看到任何建议或我未考虑的项目,并且您知道我需要使用哪些函数将时间转换为UTC以存储在数据库中,以及用于转换UTC时间的函数,请告诉我使用$ timezone变量显示用户。
答案 0 :(得分:1)
用于将UTC时间插入数据库:
INSERT INTO posts (stamp) VALUES (UTC_DATE())
UPDATE:这只会将YYYY-MM-DD插入您的数据库。如果您还需要时间,请使用:
INSERT INTO posts (stamp) VALUES (UTC_TIMESTAMP())
然后根据时区打印日期:
$date = date_create($list1['stamp'], timezone_open($timezone)); //$timezone='Pacific/Nauru';
echo date_format($date, 'F d');
这应该有助于你开始。了解有关面向对象方法的PHP DateTime Class以及更一般的清洁编程的更多信息。