PHP date();与时区? [英] PHP date(); with timezone?
问题描述
所以我检查了 PHP支持的时区的列表,我想知道如何包含他们在date();功能?
谢谢!
So I've checked the list of supported time zones in PHP and I was wondering how could I include them in the date(); function? Thanks!
我不想要一个默认的时区,每个用户都将他们的时区存储在数据库中,我拿那个用户的时区并使用它。怎么样?我知道如何从数据库中获取它,而不是如何使用它。
I don't want a default timezone, each user has their timezone stored in the database, I take that timezone of the user and use it. How? I know how to take it from the database, not how to use it, though.
推荐答案
对于这样的任务,你应该真的使用PHP的DateTime类。请忽略所有的答案建议您使用date()或date_set_time_zone,它只是不好而已。
For such task, you should really be using PHP's DateTime class. Please ignore all of the answers advising you to use date() or date_set_time_zone, it's simply bad and outdated.
我将使用伪代码进行演示,所以尝试调整
I'll use pseudocode to demonstrate, so try to adjust the code to suit your needs.
假设变量$ tz包含有效时区的字符串名称,变量$ timestamp包含要根据时区格式化的时间戳,代码如下所示:
Assuming that variable $tz contains string name of a valid time zone and variable $timestamp contains the timestamp you wish to format according to time zone, the code would look like this:
$tz = 'Europe/London';
$timestamp = time();
$dt = new DateTime("now", new DateTimeZone($tz)); //first argument "must" be a string
$dt->setTimestamp($timestamp); //adjust the object to correct timestamp
echo $dt->format('d.m.Y, H:i:s');
DateTime类功能强大,要掌握其所有功能 - 您应该将您的一些时间阅读关于它在php.net。完全回答您的问题 - 是的,您可以动态调整时区参数(在从db读取数据时,每次迭代都可以创建一个新的DateTimeZone()对象)。
DateTime class is powerful, and to grasp all of its capabilities - you should devote some of your time reading about it at php.net. To answer your question fully - yes, you can adjust the time zone parameter dynamically (on each iteration while reading from db, you can create a new DateTimeZone() object).
这篇关于PHP date();与时区?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!