Moment.js toDate并不总是返回Date实例

时间:2013-10-24 07:41:36

标签: node.js momentjs

基本上,我需要计算一个(非常长寿的)cookie的到期日期,所以我想现在+ 99年。因为使用像Moment.js这样的库比使用本机JavaScript更容易,我正在做:

var expirationDate = moment().add('years', 99);

但是我需要一个JavaScript Date对象并在其上调用toUTCString函数来获取cookie的格式正确的字符串。因此我在做:

var expirationDate = m().add('years', 99).toDate().toUTCString();

现在,发生了一些非常奇怪的事情。当我在Node.js shell中运行这一行时,一切都很好。但是如果我从脚本中运行它,它就会失败。错误消息是

  

TypeError:Object Mon,21 Oct 2112 07:34:34 GMT没有方法'toUTCString'

这是正确的,因为toDate返回的 thing 不是Date的实例,而只是一个普通的旧对象。奇怪的是,当我在Node.js REPL中尝试完全相同的事情时,toDate返回Date的实例。

我在同一台机器上使用Node.js 0.8.25同时运行REPL和脚本。 Moment.js是版本2.3.1。

知道可能导致此问题的原因吗?

2 个答案:

答案 0 :(得分:3)

您应该只需一步即可完成此操作:

moment().add('years', 99).toISOString()

但我认为主要问题是通过评论中的破坏来确定的。

答案 1 :(得分:-1)

你尝试过这样的事情吗?

expirationDate = new Date(moment().add('years', 99));

这样,你会得到一个约会的日期,我尝试了MomentJs的.toDate(),但它不能满足我的需求。