我从“MM/dd/yy”格式的代码中获取日期。我在 JavaScript 中创建一个 Date 对象:
var tempDate = new Date(dateStringInMM/dd/yy)
现在,在 IE 中, tempDate.getYear() 给了我“13”,而 tempDate.getFullYear() 给了“1913”作为值。
是否有任何规定可以在 JavaScript 中为 IE 获取“2013”?
我从“MM/dd/yy”格式的代码中获取日期。我在 JavaScript 中创建一个 Date 对象:
var tempDate = new Date(dateStringInMM/dd/yy)
现在,在 IE 中, tempDate.getYear() 给了我“13”,而 tempDate.getFullYear() 给了“1913”作为值。
是否有任何规定可以在 JavaScript 中为 IE 获取“2013”?
仅给出两位数的日期时,1913 年是一个非常好的猜测。浏览器无法知道您的网站要求的日期类型。例如,如果您要询问用户的出生日期,1913 年会是一个更好的猜测,因为 2013 年出生的人还不足以使用该网站。
我可以理解为什么您可能期望它猜测 2013 年,但仅考虑两位数,不可能合理地期望它每次都正确。这对某人来说是错误的。
这种行为的实际原因很可能是为了向后兼容。
19xx
当给出两位数的日期时,较旧的浏览器版本会猜到。在当时,这将是一个完全合理的猜测。
与此同时,网站应该是由知道这一点的作者编写的,并且可能会采取一些技巧,比如将价值加 100 来解决这个问题。
这意味着如果发布的新版本的浏览器改变了这种行为,它将破坏那些旧网站。
由于这种事情,微软尤其倾向于对改变现有行为非常保守。因此,他们会让它像往常一样工作。
这里真正的解决方案是不使用两位数的日期。只需首先指定四位数字,就不会出现任何问题。
然而,这并不是完整的画面,因为部分问题归结于缺乏与类的跨浏览器一致性Date
。您可能会发现给两个浏览器提供相同的日期字符串会给您不同的值。
出于这个原因,我建议根本不要使用内置的 JavascriptDate
类,而是使用现有的库之一来帮助解决这个问题。
这两个库都允许您指定日期,并指定您使用的格式。它们还将在所有浏览器中始终如一地工作,并且当您仅指定两位数字时,它们也更有可能给您正确的答案(尽管您仍然会有歧义和可能的错误,所以我仍然推荐使用四位数)。
希望有帮助。
相同的功能在 IE 中运行良好,请在此处查看小提琴:
<script>
function myFunction()
{
var d = new Date('11/07/2013');
var x = document.getElementById("demo");
x.innerHTML=d.getFullYear();
}
</script>
<button onclick="myFunction()">Get date</button>
<p id="demo">Click the button to display the full year of todays date.</p>
产量为 2013 年