我正在制作罗马皇帝的图形列表,遇到了以下问题:出生和死亡日期以字符串的形式存储在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错误是这样的"问题">