1

看来我不能使用javascript Date 对象,因为当您使用日期字符串进行初始化时,它固有地默认为美国日期。无法将任何文化信息传递给日期对象

即无论客户端的区域设置是什么

如果客户语言环境是英国,var d = new Date("08/10/2009") 将始终创建一个表示 2009 年 8 月 10 日而不是 2009 年 10 月 8 日的日期对象。

因此,鉴于我的要求是能够轻松地添加/减去天/月/年,是否有一种巧妙的方法可以在没有 Date 对象的情况下轻松做到这一点

我需要做的就是在日期中添加一天(或日期的字符串表示形式)。因此,如果我的代码检测到语言环境设置在美国,当它看到像“10/08/2009”这样的字符串时,它会将它打到“10/09/2009”,但如果它检测到它在英国它会知道它是日期的英国字符串表示形式,并将其打到“2009 年 9 月 10 日”

4

4 回答 4

3

对于 JavaScript 上的日期操作和本地化,我总是推荐DateJS库。

这个库抽象了 Date 对象的使用,有一个非常好的本地化选项,强大的日期解析和格式化,它还有一个非常好的 fluent API。

于 2009-10-08T18:59:05.943 回答
1

如果您知道输入格式为 dd/mm/yyyy,则可以轻松组合正确的日期。

function britDay(D){
 D= D.match(/\d+/g);
 return new Date(+D[2], D[1]-1, +D[0]);
}

toLocaleDateString 将以用户期望的格式返回日期。

依靠遵循特定格式规则的用户输入是乐观的——这就是为什么大多数网站使用单独的、标记的输入或选择月份、日期和年份的字段的原因。

于 2009-10-08T18:49:23.623 回答
0

你可能知道给日期加一天很容易,只需给日期加 86,400 * 1000 毫秒。听起来在您的语言环境中显示是问题所在;Date.toLocaleString() 不适合您吗?

于 2009-10-08T18:18:34.450 回答
0

dojo.date.locale.parse 将能够根据您选择的语言环境解析格式化的字符串。它有一个基于 unicode.org/cldr 的文化数据表。有关更多信息,请参阅本文

于 2009-12-11T04:07:01.940 回答