在没有Date对象的情况下在Javascript中操作日期

时间:2009-10-08 17:34:13

标签: javascript localization date-format

看来我无法使用javascript Date对象,因为当您使用datestring初始化时,它继承默认为美国日期。没有办法将任何文化信息传递给日期对象

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

var d = new日期(“08/10/2009”)将始终创建一个日期对象,代表2009年8月10日,而不是2009年10月8日,如果客户区域是英国。

因此,考虑到我的要求是能够轻松地添加/减去天/月/年,是否有一种聪明的方法可以在没有Date对象的情况下轻松完成这项工作

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

4 个答案:

答案 0 :(得分:3)

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

这个库提取了Date对象的使用,具有非常好的本地化选项,强大的日期解析和格式化,并且它还具有非常好的流畅API。

答案 1 :(得分:1)

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

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

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

依赖于遵守特定格式规则的用户输入是乐观的 - 这就是为什么大多数网站使用单独的,标记的输入或选择月,日和年的字段。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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