首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止JS Date神奇地添加不存在的日期和月份?

问如何防止JS Date神奇地添加不存在的日期和月份?
EN

Stack Overflow用户
提问于 2014-08-19 18:37:13
回答 1查看 110关注 0票数 0

我使用moment.js和JavaScript Date构造函数自动解析大量日期,这些日期的格式可以是任何格式。

考虑以下代码:

代码语言:javascript
复制
var dateString = "June 2013";
var dateObj    = new Date(dateString);
console.log(dateObj); // Sat Jun 01 2013 00:00:00 GMT+0100 (BST)

我们可以看到,行为是将日期设置为1号(如果没有指定,则与月份类似)。

我理解这种行为,但是当我查询Date对象并请求日期时,它将返回一个最初未指定日期的日期。

除了在原始字符串上做一堆正则表达式处理之外,还有什么方法可以解决这个问题吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-02-01 00:10:44

当我查询Date对象并请求日期时,它将返回一个最初未指定日期的日期。

使用变量存储字符串,然后在这些实例上使用defineProperty覆盖getDate回调:

​

代码语言:javascript
复制
    var dateString = "June 2013";
    var foo = new Date(dateString);

    if (dateString.match(/\s[0-31]\s/) === null)
      {
      Object.defineProperty(foo, 'getDate', {value: function(){return null} });
      }
    console.log(foo.getDate() );

​

参考

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25381268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档