当前位置: 首页 > 知识库问答 >
问题:

函数的作用是:返回UTC时间而不是本地时间

归鹤龄
2023-03-14

在php.ini我设置了date.timezone="Europe/Amsterdam"。重新启动了Apache,phpinfo()中的输出显示了正确的时区(Europe/Amsterdam)。现在当我打印date('H: i')时,我得到的是UTC时间,比我们的本地时间晚2小时。但是当我打印localtime(time(), true)时,我仍然得到UTC时间,而我期望的是本地时间。

timedatectl的输出是:

Local time: Thu 2020-07-09 09:15:26 CEST
Universal time: Thu 2020-07-09 07:15:26 UTC
RTC time: Thu 2020-07-09 07:15:27
Time zone: Europe/Amsterdam (CEST, +0200)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no

如果您能帮我了解当地时间,我们将不胜感激。

更新:

phpinfo()的输出为:

date/time support                   enabled
timelib version                     2017.09
"Olson" Timezone Database Version   0.system
Timezone Database                   internal
Default timezone                    UTC

Directive                           Local Value         Master Value
date.default_latitude               31.7667             31.7667
date.default_longitude              35.2333             35.2333
date.sunrise_zenith                 90.583333           90.583333
date.sunset_zenith                  90.583333           90.583333
date.timezone                       Europe/Amsterdam    Europe/Amsterdam

所以“date.timezone”是正确的,但与“默认时区”有什么区别?

当我在脚本上方添加这一行时,时机已经成熟:

date_default_timezone_set('Europe/Amsterdam');

但是PHP date\u default\u timezone\u set引用页面告诉我们,“除了使用此函数在脚本中设置默认时区,您还可以使用INI设置date.timezone来设置默认时区。”。这就是我所做的和不起作用的。

在脚本中设置默认时区当然是一个棘手的解决方法;在php中设置。ini是更好的方法,所以我仍然对如何解决这个问题感兴趣。

共有1个答案

万俟浩
2023-03-14

毕竟我没有找到如何正确设置它,但在依赖时间的代码之前添加了这个解决方法

date_default_timezone_set('Europe/Amsterdam');
 类似资料:
  • Python时间模块中的是否返回系统的时间或UTC时间?

  • 我想以毫秒为单位获取当前的UTC时间。我搜索了一下google,得到了System.currentTimeMillis()确实返回UTC时间的一些答案。但事实并非如此。如果我做了以下事情: 所有三个时间几乎相同(由于通话时间不同,时间相差毫秒)。 这个时间不是UTC时间,而是我的时区时间。如何在android中获取当前UTC时间?

  • 编辑:好的。不幸的是,我不得不承认我对Java时间的理解存在严重缺陷,使得这个问题毫无意义。我一直认为System.currentTimeMillis()返回了当地时间。为什么?因为当你用它创建一个Date时,它只包含那个,没有引用时区,但在传递给System.out.println()时仍然打印出当地时间。我从未想过是toString()将(UTC)时间转换为当地时区。:( 我想用Java创建一

  • 问题内容: 我只想检查是否返回UTC / GMT时间戳,还是需要使用? 问题答案: 返回UNIX时间戳,该时间戳与时区无关。由于UNIX时间戳表示自1970年 UTC 以来的秒数,您可以说它是UTC,但实际上没有时区。 实际上,UNIX时间戳在任何给定时间在全世界范围内都是相同的值。在撰写本文时,它在东京,伦敦和纽约。要将其转换为“人类可读”的时间,您需要指定要显示的时区。在东京是,在伦敦是在纽约

  • 问题内容: 我想以毫秒为单位获取当前UTC时间。我搜索了google,并得到了一些System.currentTimeMillis()确实返回UTC时间的答案。但事实并非如此。如果我执行以下操作: 这三个时间几乎都相同(由于通话,相差以毫秒为单位)。 这不是UTC时间,而是我的时区时间。如何在Android中获取当前UTC时间? 问题答案: 您显示的所有三行都将给出自unix纪元以来的毫秒数,这是

  • 问题内容: 我真的对方法调用的结果感到困惑,因为它返回了IST时间。 这是我使用的代码 我得到的答复是: 所以我尝试将默认的TimeZone更改为UTC,然后检查了一下,然后工作正常 结果: 我在这里想念什么吗? 问题答案: 该调用返回的。正是它将转换为的字符串,并且这种转换将使用您所用的默认时区。 您需要明确使用来在所需的时区中打印。 编辑:@Laurynas的礼貌,请考虑以下事项: