4

可能重复:
JavaScript 日期对象英国日期

我有以下代码,我在将日期格式设置为英国时遇到问题,即

var birthday = new Date("20/9/1988"); 

当我运行我得到的代码时You are NaN years old。错误但如果我将其更改为 09/20.1988 它可以工作

var birthday = new Date("20/9/1988");
var today = new Date();
var years = today.getFullYear() - birthday.getFullYear();

// Reset birthday to the current year.
birthday.setFullYear(today.getFullYear());

// If the user's birthday has not occurred yet this year, subtract 1.
if (today < birthday)
{
    years--;
}
document.write("You are " + years + " years old.");

// Output: You are years years old.
4

2 回答 2

3

JavaScript 现在支持ISO8601格式的日期,尽可能使用标准化格式是有益的 - 您将遇到更少的兼容性问题:

var birthday = new Date("1988-09-20");
于 2013-01-22T12:28:17.580 回答
2

一个选项是问题中描述的选项。为什么 Date.parse 给出不正确的结果?

我建议您手动解析日期字符串,并使用带有年、月和日参数的 Date 构造函数以避免歧义

您可以像这样为您的日期格式创建自己的解析方法(来自问题为什么 Date.parse 给出不正确的结果?):

// Parse date in dd/mm/yyyy format
function parseDate(input)
{
    // Split the date, divider is '/'
    var parts = input.match(/(\d+)/g);

    // Build date (months are 0-based)
    return new Date(parts[2], parts[1]-1, parts[0]);
}
于 2013-01-22T12:29:57.290 回答