【发布时间】:2013-05-14 08:31:47
【问题描述】:
我正在尝试编写一些 javascript 代码来格式化我想要的日期,但我无法让它在 Firefox 上运行(它在 Chrome 上按我想要的方式运行)。
我在表单中的输入是 05/01/13 (mm/dd/yy),我想要 2013-05-01 (yyyy/mm/dd)。
为此,我所做的是这样的:
var formDate = document.getElementById("start").value;
var myDate = new Date(formDate);
var startDate = new Date();
startDate.setMonth(myDate.getMonth() + 1);
startDate.setFullYear(myDate.getFullYear());
var FormattedDate = startDate.getFullYear() + "-" + ((startDate.getMonth() <= 10) ? "0" : "") + startDate.getMonth() + "-01"; // the day is always 01
alert(FormattedDate);
您可以在这两种浏览器上试用:http://jsfiddle.net/j4BLH/
在 Google Chrome 上,此代码为我提供了例如 5 月的 2013-05-01,但在 Firefox 上,我有 1913-05-01。
我知道我可以写像 "20" + startDate.getYear() 这样的东西,但我想知道为什么结果从 Chrome 到 Firefox 不同?如果你有更好的方法来编写我粘贴在这里的代码,请告诉我:)
谢谢!
【问题讨论】:
-
似乎 Firefox 正在做一些奇怪的事情,因为日期自纪元(1970 年)以来以毫秒为单位存储在内部。所以,它永远不应该返回 1913。(ECMAScript Reference)
-
日期解析依赖于 JavaScript 实现,我认为 Firefox 只是不理解
mm/dd/yy格式 - 请参阅 stackoverflow.com/questions/2587345/javascript-date-parse -
也许使用momentjs.com。日期的跨浏览器问题处理起来真的很痛苦。
-
@DarkCthulhu 我尝试实现 moment.js 库,在 Firefox 上,我有相同的行为,13 给出 1913。
标签: javascript google-chrome firefox date