如何使用Moment.js格式化ISO日期BC?
moment("-700-01-01").year(); // 700 (WRONG)
moment("-0700-01-01").year(); // 700 (WRONG)
moment("-000700-01-01").year(); // -700 (RIGHT)
出于某种原因,一年有6位数的符号有效。这是"对"办法?为什么"-700-01-01"
之类的符号不起作用?
答案 0 :(得分:3)
这不是Moment.js特有的问题;如果您尝试使用您正在使用的字符串初始化Date()
对象,也会发生同样的情况。如果您首先将其创建为Date()
对象并使用setYear()
手动分配年份,则会接受-700
的日期:
var date = new Date();
date.setYear(-700);
moment(date).year();
> -700
然而,正如Niels Keurentjes has pointed out所述,日期计算这一点远远变得非常复杂,并且可能完全不可靠。
如果您需要“-700-01-01”,可以分别配置年,月和日:
date.setYear(-700);
date.setMonth(0);
date.setDate(1);
console.log(date);
> Fri Jan 01 -700 11:53:57 GMT+0000 (GMT Standard Time)
至于700BC的第一个月的第一天是否实际上是一个星期五...你必须自己看一下。
答案 1 :(得分:0)
在您的示例中,减号也用作年,月和日之间的分隔符。正如你在詹姆斯答案的评论中指出的那样,使用昏迷作为分隔符有助于区分。