javascript - 比较日期时的位置

标签 javascript

如果我使用策略来比较此处显示的基于文本的日期:Compare two dates with JavaScript .

假设用户输入“03/02/2013”​​(将遵循带有“/”的格式),我将其与“04/01/2013”​​进行比较。在欧洲日历中,第一个日期是 2 月 3 日,第二个日期是 1 月 1 日。但在美国日历中,第一个是 3 月 2 日,第二个是 4 月 1 日。对于欧洲标准,第一个日期比第二个大,但对于美国标准,第二个更大。

链接中的这种方法是否考虑了日期位置?如果我的计算机不采用欧洲版本,我还没有找到测试它的方法,这就是我问的原因。

最佳答案

不,那里的策略不会为您处理日期本地化。

Javascripts 内部日期对象确实考虑了本地化。但这仅取决于浏览器/机器区域设置 哪个不一定必须匹配用户日期格式,位于它前面

而且您无法区分 DD/MM/YYYY 和 MM/DD/YYYY 格式。 异常(exception)情况:DD > 12 没有关于用户的更多信息。

您当然可以使用浏览器/机器的本地化或 ip 地址来获取位置或其他内容, 并根据这些信息处理格式,但这很容易导致错误的结果。

我宁愿确保 Date 对象的构造正确。

例如,通过提供一个日期选择器,让用户分别选择年月日,以避免日期因格式而产生歧义。

因为您无法确定坐在 PC 前的用户使用的是什么格式。

例如:我是欧洲人并且在 enUS 上设置了我的浏览器区域设置。

因此

然后你可以像 new Date(YEAR,MONTH,Day) 这样构造你的日期对象 例如 ->

var year1 = 2013; //Suppose those variables will be handle by some user input method
var year2 = 2013;

var month1 = 0; //January (Months are zero based in javascripts Date Object)
var month2 = 3; //April

var day1 = 3;
var day2 = 1


var date1 = new Date(year1,month1,day1);
var date2 = new Date(year2,month2,day2);

console.log(date2.getTime() > date1.getTime()); //true

并且完全避免这个问题

关于javascript - 比较日期时的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14459180/

相关文章:

javascript - 如何使用 jquery 从列表中删除项目?

javascript - 在哪里可以让客户端编辑 JSON 文件?

javascript - 通过元素属性获取地址

javascript - 如何将 ViewData 从 Controller 传递到我的 JS

php - 需要将带有方括号的字段名称转换为javascript对象

javascript - electron 的 globalShortcut 将禁用原始按键

javascript - 在javascript中用数字和特殊字符对字符串进行排序

php - 将mysql日期时间转换为简单文本

javascript - WebSocket 与 Rails 集成

javascript - Angular 1 $scope 和 ES6 Promises