沃梦达 / 编程问答 / php问题 / 正文

PHP date() 与时区?

PHP date() with timezone?(PHP date() 与时区?)

本文介绍了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() 与时区?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:PHP date() 与时区?

基础教程推荐