PHP date(); 有时区吗?

 手机用户2502907701 发布于 2023-02-13 19:01

所以我已经检查了PHP支持的时区列表,我想知道如何将它们包含在date()中; 功能?谢谢!

我不想要一个默认时区,每个用户都有他们的时区存储在数据库中,我拿用户的时区并使用它.怎么样?我知道如何从数据库中获取它,而不是如何使用它.

5 个回答
  • 对于这样的任务,你应该真正使用PHP的DateTime类.请忽略所有建议您使用date()或date_set_time_zone的答案,它只是糟糕和过时.

    我将使用伪代码进行演示,因此请尝试调整代码以满足您的需求.

    假设变量$ tz包含有效时区的字符串名称,变量$ timestamp包含您希望根据时区格式化的时间戳,代码将如下所示:

    $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()对象).

    2023-02-13 19:02 回答
  • 如果我理解正确,你需要先设置时区,如:

    date_default_timezone_set('UTC');
    

    而且你可以使用日期功能:

    // Prints something like: Monday 8th of August 2005 03:12:46 PM
    echo date('l jS \of F Y h:i:s A');
    

    2023-02-13 19:02 回答
  • 请改用DateTime类,因为它支持时区.日期时间相当于date()DateTime::format.

    DateTime的一个非常有用的包装是Carbon - 绝对可以看一看.

    您希望以UTC格式存储在数据库中并在应用程序级别进行转换.

    2023-02-13 19:02 回答
  • 上面的答案让我跳过了一些箍/陷阱,所以只需发布适合我的清洁代码:

    $dt = new DateTime();
    $dt->setTimezone(new DateTimeZone('America/New_York'));
    $dt->setTimestamp(123456789);
    
    echo $dt->format('F j, Y @ G:i');
    

    2023-02-13 19:03 回答
  • 它应该是这样的:

    date_default_timezone_set('America/New_York');
    

    2023-02-13 19:03 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有