V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
no13bus
V2EX  ›  JavaScript

问个关于 js 里面的 Date 解析问题

  •  
  •   no13bus · 2014-07-17 00:21:30 +08:00 · 2957 次点击
    这是一个创建于 3789 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Date.parse('2014-07-16 16:12:30')返回直为1405498350000
    Date.UTC(2014,7,15, 16,33,43)返回直为1408120423000
    这2个数值之间相差728个小时,觉得也不是因为时区的问题把。不明白。
    6 条回复    2014-07-17 09:39:33 +08:00
    wxt2005
        1
    wxt2005  
       2014-07-17 00:39:35 +08:00   ❤️ 1
    因为你用 2014,7,15 这种格式传值的时候,月份是从0开始数的。
    所以实际上这是8月15日了。
    jsonline
        2
    jsonline  
       2014-07-17 00:50:47 +08:00 via Android   ❤️ 1
    差了一个月,经典的坑。专门用来坑新手的。
    jsonline
        3
    jsonline  
       2014-07-17 01:09:59 +08:00
    你如果要问为什么JS这么坑,其实是因为JS诞生的时候直接照搬了Java 1.0的Date对象。
    所以 Java 1.0 的 Date 为什么是这样的呢?是因为 Java 1.0 遵循了一份老旧的 C 语言的标准(the old standard (POSIX) localtime C function http://linux.die.net/man/3/localtime)

    这个坑的由来和 JS 的 NaN 坑是多么的类似啊,啊哈哈。
    SoloCompany
        4
    SoloCompany  
       2014-07-17 02:45:02 +08:00 via iPad
    这个问题的标准回答可以套用典型的 RTFM 了
    coolicer
        5
    coolicer  
       2014-07-17 08:24:33 +08:00
    学习了。
    Tonni
        6
    Tonni  
       2014-07-17 09:39:33 +08:00 via Android
    可以考虑用momentjs处理时间
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2337 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:57 · PVG 08:57 · LAX 16:57 · JFK 19:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.