gpt4 book ai didi

javascript - MooTools 日期选择器默认格式

转载 作者:行者123 更新时间:2023-11-29 15:42:17 26 4
gpt4 key购买 nike

我正在使用 mootools 中的日期选择器,并尝试根据用户位置对其进行本地化格式。

例如:

08/15/13 //American
15.08.13 //English

文档声明它应该默认更改格式:(*string*,默认为默认本地化格式)

但是使用这段代码:

    window.addEvent('domready', function(){
new Picker.Date($$('input'), {
timePicker: true,
positionOffset: {x: 5, y: 0},
pickerClass: 'datepicker_bootstrap',
useFadeInOut: !Browser.ie
});
});

它始终使用美国格式 08/15/13(月份优先)。

我正在通过更改我在 Windows 7 中设置的时区进行测试日期和时间

最佳答案

我不认为 DatePicker 是“开箱即用”的。我不确定在客户端脚本中是否有防水的方法来获取用户位置或语言代码。

我刚试过:

var language = window.navigator.userLanguage || window.navigator.language;
console.log(language);

并在同一台机器上在 Chrome 中获取了 “sv”,在 Firefox 中获取了 “en-GB”

我使用 php/HTTP-request header 得到了大致相同的结果。考虑从服务器端获取信息。 This问题点 HTTP_ACCEPT_LANGUAGE 为最佳方式,但是:

$_SERVER["HTTP_ACCEPT_LANGUAGE"] // gives me:
sv-SE,sv;q=0.8,en-US;q=0.6,en;q=0.4 //in chrome
en-gb,en;q=0.5 //in firefox

如果您查看第一行中的 DatePicker.js 文件:

---
name: Locale.en-US.DatePicker
description: English Language File for DatePicker
authors: Arian Stolwijk
requires: [More/Locale]
provides: Locale.en-US.DatePicker
...

这让我感觉它设置为 en-US。如果您手动设置它,它将起作用。

我的建议是关注Dimitar的建议并使用 Locale.use() 手动设置它。例如,如果您在调用 DatePicker 之前添加 Locale.use('sv-SE');,您将获得格式为 yyyy-mm-dd 的日期。

我做了一个脚本来读取客户端语言,试图让它动态化。它有效,但未经测试。这分配了一种语言来比较 Mootools Locale.list() 和我在上面发布的浏览器/javascript 答案:

var language = window.navigator.userLanguage || window.navigator.language;
console.log(language); //gives the results I wrote above (sv/en-GB resp. Chrome/FF)
var list = Locale.list().length;
for (var i = 0; i < list; i++) {
if (Locale.list()[i] == language) { //check if it's a full match
Locale.use(language);
} else {
// go for the first part of the "sv-SE" and find a match
// this is a compromise, it gets the right language but might miss the right country
var langArray = language.split('-');
var locArray = Locale.list()[i].split('-');
for (var k = 0; k < list; k++) {
if (langArray[0] == locArray[0]) {
Locale.use(Locale.list()[i]);
}
}
}
}
console.log(Locale.getCurrent().name); // gives sv-SE/en-GB resp. Chrome/FF
new Picker.Date($$('input'), {
// etc...

如果你认为它有用,你可以微调它......<强> Fiddle here

关于javascript - MooTools 日期选择器默认格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17424626/

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