如何在PHP中获取当前日期时间的decimal(16,4)等效值?
PHP获取对应decimal(16,4)格式的日期时间值
你之前用format('U')只能拿到整数Unix时间戳,但数据库里存储的是带四位小数的时间戳(比如1389639800.8659),需要获取包含微秒的时间值再处理。
解决方案代码
// 设置目标时区 $timezone = new DateTimeZone('Europe/Warsaw'); // 获取当前时区的DateTime实例 $datetime = new DateTime('now', $timezone); // 获取带六位微秒的时间戳字符串,格式:{整数时间戳}.{六位微秒} $timestampWithMicro = $datetime->format('U.u'); // 转换为float并保留四位小数,生成符合decimal(16,4)的格式 $decimalTime = number_format((float)$timestampWithMicro, 4, '.', ''); // 或者用round直接取四位小数,结果等价 // $decimalTime = round((float)$timestampWithMicro, 4); // 此时$decimalTime即可直接与数据库的decimal(16,4)值比较 echo $decimalTime;
关键说明
format('U.u')是核心:U输出整数Unix时间戳,u输出六位微秒,组合后得到带小数的完整时间戳字符串(例如1660138200.123456)。- 用
number_format或round保留四位小数后,结果完全匹配decimal(16,4)的存储格式,不管是字符串还是数值类型,都能直接和数据库的字段做比较。 - 针对你举例的
2022-08-10 12:50:00(欧洲华沙时区),对应的decimal(16,4)值为1660138200.0000(假设该时间点无毫秒偏移)。
内容的提问来源于stack exchange,提问作者ILG
相关产品推荐
相关产品推荐

