当以毫秒为单位设置 m-d-Y H:i:s.u 格式的日期时,为什么微秒字段显示 000000?

Mary-Kate Olsen
发布: 2024-10-23 19:52:30
原创
512 人浏览过

Why is the Microseconds Field Displaying 000000 When Formatting Dates in m-d-Y H:i:s.u from Milliseconds?

从毫秒获取日期格式 m-d-Y H:i:s.u

在此查询中,目标是将日期字符串格式化为“m-d-Y H:i:” s.u" 来自以毫秒为单位的 Unix 时间戳。但是,结果在微秒字段中始终显示 000000。

<code class="php">$milliseconds = 1375010774123;
$d = date("m-d-Y H:i:s.u", $milliseconds/1000);
print $d;</code>
登录后复制

输出:

07-28-2013 11:26:14.000000
登录后复制

解决方案

要解决此问题,可以使用输入格式“U.u”:

<code class="php">$now = DateTime::createFromFormat('U.u', microtime(true));
echo $now->format("m-d-Y H:i:s.u");</code>
登录后复制

输出:

04-13-2015 05:56:22.082300
登录后复制

此方法利用 PHP 手册中的以下格式说明符:

  • U:自 Unix 纪元以来的秒数
  • u:微秒

时区和 microtime()

需要注意的是,如果未明确提供, createFromFormat() 方法通常使用本地时区。但是,由于 microtime() 返回自 UTC 中的 Unix 纪元以来经过的秒数,因此 DateTime 对象隐式初始化为 UTC。

如果需要显示特定时区的时间,则必须设置在初始 DateTime 创建后使用 setTimeZone():

<code class="php">$now->setTimeZone(new DateTimeZone('America/New_York'));</code>
登录后复制

输入到 MySQL

要将格式化的日期字符串输入到 MySQL,格式应修改为:

<code class="php">format("Y-m-d H:i:s.u")</code>
登录后复制

以上是当以毫秒为单位设置 m-d-Y H:i:s.u 格式的日期时,为什么微秒字段显示 000000?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!