Date.prototype.toLocaleDateString() problem



我正在制作罗马皇帝的图形列表,遇到了以下问题:出生和死亡日期以字符串的形式存储在JSON中。例如:凯撒大帝:

"start":"-000100-07-12"

如果我使用Date对象

console.log(new Date(caesar.start))

…通过console.log它可以工作:

//日期对象thjul 12 -0100 00:53:28 GMT+0053…

但是如果我现在想用

将对象呈现为字符串

console.log(
new Date("-000100-07-12")
.toLocaleDateString("en", {year : "numeric", era: "short"})
);

console.log给出

"101 BC"而不是" 100bc">

这个问题很容易重现。

我只找到一个类似的描述

表示不同的技术。

然而,问题似乎是一样的。

修复方法是编写自定义toLocaleDateString函数,因为getFullYear(), getMonth()按预期工作。

有没有人有类似的经历,或者有解决问题的方法?我想处理1582年之前的日期有点不太好....也许这和没有0年有关?

看起来问题在toLocaleDateString.

但是单独的方法可以正常工作

例如

date.getDate(); // 12
date.getFullYear(); // -100
date.getMonth(); // 6 (getMonth() starts with 0) 

您可以使用以下方法获得相同的格式。

根据ISO 8601标准,"-000100-07-12"表示公元前101年7月12日,日期似乎被正确解析。

只是标准不符合我们的期望,因为我们几乎总是处理正值的年份。

不幸的是,我无法看到"原因"是什么。链接的Oracle错误是这样的"问题">

相关内容

  • 没有找到相关文章

最新更新