PHP的毫秒时间戳中的毫秒部分是几位?

基本环境
php ^7.3
mysql ^8.0

环境的意思是按较新的版本来说,不考虑旧版因素。
因为MySQL中时间戳的格式是如下,所以在一般都是以如下格式进行存储。

$date = new DateTime($value);
$date = $date->format('Y-m-d H:i:s.u');

请教时间戳里的毫秒部分应该是几位?

为什么好多在线转换工具只提供3位的毫秒时间戳?是因为不需要在意更长的位数了吗?

MySQL中最多提供6位的毫秒时间戳,相信已经足够了。

如果考虑不同语言间的数据交换的时候,应该用几位的毫秒时间戳?

阅读 5.3k
3 个回答

一般都不需要毫秒,如果需要,保留三位也就够了,如果你需要很高经度的毫秒或微秒,往数据库里存 float 也可以的.

毫秒本来就是1/1000秒。3位够了啊。

  1. microtime(true) 返回的精度是?

    PHP 源代码:

    if (get_as_float) {
        RETURN_DOUBLE((double)(tp.tv_sec + tp.tv_usec / MICRO_IN_SEC));
    }

    所以小数点部分是 tp.tv_usec / MICRO_IN_SEC,最多就 6 位。

  2. date('u') 精度是?

    PHP 源代码:

    case 'u': length = slprintf(buffer, 32, "%06d", (int) floor(t->f * 1000000 + 0.5)); break;

    %06d 也是6位。

至于实际要存多少,看业务需求了(实际上我还没遇到过需要毫秒的业务,无奈摊手)。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题