如果我使用策略来比较此处显示的基于文本的日期: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/