我想要获取特定日期的毫秒级别的Unix时间戳。如果我先获得该日期的秒级别的Unix时间戳,然后将其乘以1000,那么我得到的值将是这种格式:1.3E+12。我希望返回的值格式为1300000000000。请问这种情况是否可行?
time()
获取)是31位有符号整数。在32位平台上,PHP不能本地支持大于32位的整数。当您尝试将其乘以1000时,结果是41位整数。因为PHP无法执行此操作,它将整数转换为浮点数。副作用是,当您回显它时看到了简短的科学计数法。DateTime
对象),您最好的选择是将整数进行另一种转换,转换为字符串。echo time() . '000';
这个方法并不十分正规,但可以生成与毫秒级时间戳完全一致的字符串。只要不需要进行数学计算,这个方法应该是可以使用的。由于你可能是为某个基于Java的Web服务而生成这个字符串,因此你可能可以使用这个方法。(如果你控制Web服务的两端,请考虑使用ISO 8601日期时间格式以获得更好的互操作性。)
$epoch_milliseconds = time() * 1000;
echo number_format($epoch_milliseconds, 0, '.', '');
如果您确实需要在生成时间戳后处理它,您可以查看 PHP 库以处理大数字: