PHP date() 带时区? [英] PHP date() with timezone?

查看:19
本文介绍了PHP date() 带时区?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我检查了 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆