在Mysql和Javascript中获取相同日期的不同时间戳?

时间:2014-03-18 18:37:24

标签: javascript mysql date timezone

在Javascript中

    new Date()
    Tue Mar 18 2014 18:54:17 GMT+0000 (GMT)
    Date.UTC(2014,03,18)
    1397779200000

在Mysql中

mysql> SELECT  NOW(), UTC_TIMESTAMP();
+---------------------+---------------------+
| NOW()               | UTC_TIMESTAMP()     |
+---------------------+---------------------+
| 2014-03-18 18:55:04 | 2014-03-18 18:55:04 |
+---------------------+---------------------+

mysql> select UNIX_TIMESTAMP('2014-03-18') ;
+------------------------------+
| UNIX_TIMESTAMP('2014-03-18') |
+------------------------------+
|                   1395118800 |

1 个答案:

答案 0 :(得分:2)

有三点不同:

  1. Date.UTC()以UTC格式解释其参数,而UNIX_TIMESTAMP()在数据库会话的时区中解释其参数。从更新到您的问题,似乎这可能没有任何影响,因为数据库会话的本地时区可能是UTC。

  2. Date.UTC()返回自UNIX纪元以来的毫秒数值,而UNIX_TIMESTAMP()返回自UNIX纪元以来的秒数值:因此它们总是相差1000倍。

  3. Date.UTC()的月份参数为零索引,因此值03表示四月,而UNIX_TIMESTAMP()的日期字面表示三月。

    < / LI>

    参考文献如下。

    的JavaScript

    正如Date.UTC()所述(强调补充):

      

    UTC函数与Date构造函数的区别在于两种方式:它返回一个time value作为数字,而不是创建一个Date对象,它解释参数以UTC而不是当地时间

    另外,正如TimeClip()(强调补充)中所述:

      

    运算符TimeClip从其参数计算毫秒数,该参数必须是ECMAScript数值。

    另外,正如Month Number所述:

      

    月份由0到11(包括0和11)范围内的整数标识。

    [ deletia ]
         

    月份值0指定1月; 1指明二月; 2指定March; 3指明四月; 4指定May; 5指定6月; 6指定7月; 7指定八月; 8指定9月; 9指定10月; 10指定11月; 11指定12月。

    的MySQL

    正如UNIX_TIMESTAMP(date)所述(强调补充):

      

    如果使用日期参数调用UNIX_TIMESTAMP(),它会将参数的值返回为,因为&#39; 1970-01-01 00:00:00&#39;世界标准时间。服务器将 date 解释为当前时区中的值,并将其转换为UTC内部值。客户可以按照Section 10.6, “MySQL Server Time Zone Support”

    中的说明设置时区