最近在做一个智能家居项目的后台,需要实时上传用户对智能设备的配置信息到服务器,以便实现同步,因此对于时间的精确度要求比较高,最开始直接是用php的time()函数来获取时间戳,获取的时间精确到秒级别,如果客户端同时操作的话还是有可能产生冲突,因此建议将时间戳精度提高到毫秒级别,但是在php没有自带的函数能获取毫秒时间戳,但提供了一个microtime()函数,如果调用时不带可选参数,本函数以 "msec sec" 的格式返回一个字符串,其中 sec 是自 Unix 纪元(0:00:00 January 1, 1970 GMT)起到现在的秒数,msec 是微秒部分。字符串的两部分都是以秒为单位返回的。

microtime()函数的详细说明,可以到w3chool上面看看《PHP microtime() 函数》。

  1. <?php
  2. echo microtime();
  3. //输出结果是
  4. //0.25139300 1138197510

注意了,它的结果是分两部分的,也就是前半部分是毫秒(但是单位是秒),后半部分是秒。
现在,我们依据这个做下修改,如下:

  1. <?php
  2. list($msec, $sec) = explode(' ', microtime());
  3. $msectime = (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);

这样就可以了,$msectime就是当前的毫秒数!可以将这两行封装成一个函数方便使用。

  1. <?php
  2. //返回当前的毫秒时间戳
  3. function msectime() {
  4. list($msec, $sec) = explode(' ', microtime());
  5. $msectime = (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);
  6. }

注意:sprintf('%.0f', $num) 是输出不含小数部分的浮点数

事情还没有结束,我把时间戳改成毫秒级别后,再次更新数据库数据时,却提示超出范围,原来之前我在数据库中是用int型来存储time()函数获取的秒级别的时间戳,存储范围是够的,改成毫秒级别的,就得改成BIGINT类型了。

整数类型         字节          范围(有符号)            范围(无符号)                用途 

TINYINT           1字节        (-128,127)                       (0,255)                    小整数值

SMALLINT          2字节     (-32 768,32 767)                    (0,65 535)                 大整数值

MEDIUMINT         3字节    (-8 388 608,8 388 607)               (0,16 777 215)             大整数值

INT或INTEGER      4字节   (-2 147 483 648,2 147 483 647)       (0,4 294 967 295)            大整数值

BIGINT            8字节   (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值

php获取当前毫秒时间戳的更多相关文章

  1. PHP获取毫秒时间戳,利用microtime()函数

    PHP获取毫秒时间戳,利用microtime()函数 php本身没有提供返回毫秒数的函数,但提供了一个microtime()函数,借助此函数,可以很容易定义一个返回毫秒数的函数.php的毫秒是没有默认 ...

  2. PHP获取毫秒时间戳

    我们知道,PHP中time()函数获取的时间戳,其单位是秒. 但是,前端JS获取的时间戳,单位是毫秒. 那么,在实际应用中,如何将JS和PHP的时间戳统一,即如何使用PHP获取毫秒时间戳呢,请看下例: ...

  3. php 获取毫秒时间戳

    function getMsec(){//返回毫秒时间戳 $arr = explode(' ',microtime()); $hm = 0; foreach($arr as $v){ $hm += f ...

  4. PHP获取当前毫秒级别时间戳

    PHP提供了一个microtime()函数,调用时不带可选参数,本函数以"msec sec"的格式返回一个字符串,其中 sec 是自 Unix 纪元(0:00:00 January ...

  5. PHP获取时间、时间戳的各种格式

    1.获取当前时间方法date() 很简单,这就是获取时间的方法,格式为:date($format, $timestamp),format为格式.timestamp为时间戳--可填参数. 2.获取时间戳 ...

  6. (基础篇)PHP获取时间、时间戳的各种格式写法汇总

    1.获取当前时间方法date() 很简单,这就是获取时间的方法,格式为:date($format, $timestamp),format为格式.timestamp为时间戳–可填参数. 2.获取时间戳方 ...

  7. php生成毫秒时间戳的例子

    php时间函数time()生成当前时间的秒数,但是在一些情况下我们需要获取当前服务器时间和GMT(格林威治时间)1970年1月0时0分0秒的毫秒数,与Java中的currentTimeMilis()函 ...

  8. JavaScript中有时候需要获取当前的时间戳

    JavaScript中有时候需要获取当前的时间戳信息,下面列举了三种获取当前时间戳的方法,第一种方法只精确到秒,后两种方法精确到毫秒. 第一种方法 var timestamp1 = Date.pars ...

  9. JavaScript 获取时间,时间戳

    一. 动态获取js时间 1.方法一:最简单的写法,直接输出时间到页面 <!DOCTYPE html> <html> <head> <title>< ...

随机推荐

  1. 【GoLang】GO语言系列--002.GO语言基础

    002.GO语言基础 1 参考资料 1.1 http://www.cnblogs.com/vimsk/archive/2012/11/03/2736179.html 1.2 https://githu ...

  2. Contains Duplicate III

    Given an array of integers, find out whether there are two distinct indices i and j in the array suc ...

  3. poj 2403

    http://poj.org/problem?id=2403 题意:就是给你m个单词,以及n段对话.每一个单词都有所对应的价值.求对话中的价值总和 题解:很简单,就是用单词和价值对应起来,然后再寻找就 ...

  4. ios The App Life Cycle

    先推荐ios 必读文章 App Programming Guide for iOS ,请在苹果官网搜索,并仔细阅读所有内容 State Description Not running The app ...

  5. 彻底卸载MySql

    刚装了下MySql,装的过程中由于修改了服务名,导致最后配置假死,不得已,重装. 但是重装时总是失败,于是google了一下,找到彻底卸载mysql的方法: 最近安装本地测试用 MySQL 服务器时总 ...

  6. zmqsend for FFmpeg

    编译 FFmpeg 时,配置中添加 --enable-libzmq 就可以通过 tcp 通讯给 FFmpeg 发送命令 Usage: zmqsend [-h ip:port] TARGET COMMA ...

  7. mysql格式化整数类型时间生成年月日时分秒格式(long或string接收)

    数据库格式: 数据库mysql语句: FROM_UNIXTIME( s.timemodified, '%Y-%m-%d %h:%i:%s' ) 生成结果: 测试sql为: SELECT *, FROM ...

  8. net 页面跳转

    前台: < a href="xx.html" target="_blank"> 后台: Response.Redirect("XXX.as ...

  9. 用 MyEclipse 开发 Spring 入门操作

    何为Spring Spring框架是一个轻量级的控制反转(IOC)技术和面向切面编程(AOP)技术的容器框架,利用Spring框架可以实现对象的生命周期管理和分离应用系统中的业务逻辑组件和通用的技术服 ...

  10. 【Mongodb】3.X 配置身份验证

    配置身份验证详解: 开启认证: 启动MongoDB./mongodb --syslog --fork --port 20000  --auth 1.如果不添加参数:auth,表明用默认的root的权限 ...