gpt4 book ai didi

javascript - 使用 d3.time.format 解析工作日名称始终显示 "Monday"

转载 作者:行者123 更新时间:2023-11-29 23:46:05 25 4
gpt4 key购买 nike

我正在使用 d3 v3.x,我想使用 d3.time.format 来解析工作日名称,然后使用 locale.timeFormat 方法进行翻译。

这是一个翻译成加泰罗尼亚语的例子:

var LOCALES = {
en: d3.locale({days:["Sunday", "Monday", "Tuesday",
"Wednesday", "Thursday", "Friday", "Saturday"]}),
ca: d3.locale({days:['Diumenge', 'Dilluns', 'Dimarts',
'Dimecres','Dijous','Divendres', 'Dissabte'"]})
};

var locale = LOCALES["ca"];
var weekdayParser = locale.timeFormat("%A");

var daysOfTheWeek = ["Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday", "Sunday"];

for(var i=0; i<daysOfTheWeek.length; i++){
daysOfTheWeek[i] =
weekdayParser(d3.time.format("%A").parse(daysOfTheWeek[i]));
};

结果:

daysOftheWeek = ["Dilluns", "Dilluns", "Dilluns", 
"Dilluns", "Dilluns", "Dilluns", "Dilluns"];

使用这个方法有没有错误?

最佳答案

虽然您可以将星期几传递给 d3.time.format().parse,但它不会做任何事情。 D3 使用几乎所有的东西来解析日期, 星期几除外(%A%a%w) .

这会导致时间的尴尬解析:

var format = d3.time.format("%A-%y-%m-%d");
console.log(format(format.parse("Monday-17-05-17"))); // "Wednesday-17-05-17"

而且,正如您所注意到的:

format = d3.time.format("%A");
console.log(format(format.parse("Wednesday"))); // "Monday"

还有:

format = d3.time.format("%a");
console.log(format(format.parse("Wed"))); // "Mon"

和:

format = d3.time.format("%w");
console.log(format(format.parse("5"))); // "1"

为什么是星期一?

默认使用d3解析时间为1900-01-01 0:0:0.000。解析日期时,这些数字会被修改;如果仅修改年和月,则日仍为 1。由于解析星期几不会修改这些数字中的任何一个,因此日期仍为 1900-01-01,正如命中注定的那样,它是 Dilluns。

关于javascript - 使用 d3.time.format 解析工作日名称始终显示 "Monday",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44074730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com