首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >moment.js函数返回节点中日期格式"dddd“的NaN

moment.js函数返回节点中日期格式"dddd“的NaN
EN

Stack Overflow用户
提问于 2019-01-09 21:51:01
回答 2查看 2.4K关注 0票数 0

在moment.js环境中,我偶然发现了一个有趣的问题。基本上,我试图从时代中获取日期格式“星期五8月24日”的时间,但结果是我收到了NaN。以下是我的node.js代码:

代码语言:javascript
复制
const moment = require("moment");
console.log(moment("Friday 24th Aug", "dddd Do MMM").valueOf());
代码语言:javascript
复制
moment.js version: 2.23.0
nodejs version: v8.11.3
OS: Linux 16.04.1-Ubuntu

如果我在浏览器上尝试相同的控制台行,则工作正常。有人偶然发现过这样的东西吗?

编辑:为链接道歉,我使用了一个已经创建的moment.js版本: 2.2.1的jsfiddle。它似乎在那个版本中“起了作用”,但现在它已经改变了:http://jsfiddle.net/fy8w62on/ (moment.js版本2.2.1)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-09 23:55:20

valueOf()给出了NaN,因为您的矩对象(moment("Friday 24th Aug", "dddd Do MMM")是无效

请注意,正如文档的默认设置部分所述:

您可以创建仅指定部分单元的矩对象,其余的将默认为当前日、月或年,或0为小时、分钟、秒和毫秒。

因此,矩试图创建一个表示2019-08-24的实例(使用当前年份),但它创建了一个Invalid Date,因为2019-08-24是星期六(使用默认设置英语、美国语言环境),而不是星期五(正如其他人在评论中已经指出的那样)。

使用parsingFlags,您将看到weekdayMismatch设置为true

代码语言:javascript
复制
var m =  moment("Friday 24th Aug", "dddd Do MMM");
console.log(m.valueOf());      // NaN
console.log(m.format());       // Invalid date
console.log(m.parsingFlags()); // Object with "weekdayMismatch": true
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0/moment.min.js"></script>

票数 1
EN

Stack Overflow用户

发布于 2019-01-09 21:59:15

Friday 24th Aug不包含一年,所以现在必须猜测它是哪一年,并使用当前年份进行猜测。

如果在运行代码时是2018年,那么valueOf将不返回NaN

但是它是2019年,所以2019年的Friday 24th Aug是无效的。

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

https://stackoverflow.com/questions/54118896

复制
相关文章

相似问题

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