从JavaScript获取日期

时间:2013-09-01 12:53:09

标签: javascript date

我想从约会开始。假设我的日期为03-08-2013它是d-mm-yyyy格式,所以我只想获得d,这是从上面的日期开始的03,所以我尝试了这段代码,但它不起作用

注意 我想这样做而不包括任何js

var date = '08-03-2013';
var d = new Date(date);
alert(d.getDate());
// 2nd way
alert(date.getDate());

警告NaN。这段代码中缺少什么? 这里是jsfiddel Link Jsfiddle Link

更新

4 个答案:

答案 0 :(得分:2)

JS中的日期解析(以及许多语言,就此而言)是有问题的,因为当输入是日期字符串时,对于什么数据片来说,它是相当模糊的。例如,使用您的日期(2013年8月3日),它可以表示为

  • 03-08-2013(dd-mm-yyyy)
  • 08-03-2013(mm-dd-yyyy)

但是,如果只是日期字符串,则无法判断日期实际上是2013年8月3日还是2013年3月8日。

您应该单独传递日期值以确保正确解析日期:

var
    str = '08-03-2013',
    parts = str.split('-'),
    year = parseInt(parts[2], 10),
    month = parseInt(parts[1], 10) - 1, // NB: month is zero-based!
    day = parseInt(parts[0], 10),
    date = new Date(year, month, day);

alert(date.getDate()); // yields 3

答案 1 :(得分:1)

您无法了解访问者的区域设置。

如果您知道字符串的格式始终是d-mm-yyyy,那么只需自己解析该值:

function GetDay(rawValue) {
    var parts = rawValue.split("-");
    if (parts.length === 3) {
        var day = parseInt(parts[0], 10);
        if (!isNaN(day))
            return day;
    }
    alert("invalid date format");
    return null;
}

Live test case

答案 2 :(得分:1)

使用moment.js。它的解析能力比Date类更灵活。

var m = moment('03-08-2013','DD-MM-YYYY');
var dayOfMonth = m.date();

答案 3 :(得分:0)

将它用于你想要的......

var date = '08-03-2013';
date=date.replace(/([0-9]{2})\-([0-9]{2})\-([0-9]{4})/g, '$3-$2-$1');
var d = new Date(date);   
alert(d.getDate());

由于