2013-09-01 91 views
-1

我想从日期获取日期。假设我的日期03-08-2013它是d-mm-yyyy格式,所以我只是想获得d,这是从上面的日期,所以我试试这个代码03,但它不工作从JavaScript中获取日期

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

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

it alert NaN。此代码中缺少什么? 这里是jsfiddel链接Jsfiddle Link

UPDATE

+0

你'data' VAR的类型为'String'不'Date',你不能调用类型'GETDATE()''方法String' – fujy

+0

什么是错的,第一种方式('警报(d。 GETDATE())')? – putvande

+0

@putvande它是第一种方式提醒NaN –

回答

2

在JS(和许多语言,对于这个问题)日期解析是有问题的,因为当输入是一个日期字符串,这是相当模糊的数据是什么。例如,使用日期(2013年8月3日)也可以表示为

  • 2013年3月8日(DD-MM-YYYY)
  • 2013年8月3日(MM-DD-YYYY)

然而,鉴于只是日期字符串,有没有办法判断的日期居然是2013年8月3日或3月8日,2013年

你应该独立传递您的日期值,以保证日期正确解析:

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 
+0

This works great .. –

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()); 

感谢

+0

我不知道是谁投了票,但它在我的结尾.. 警报显示8 – SarwarCSE

+0

是的,但OP正在寻找3,而不是8 – putvande

+0

但我显示格式在评论权利,如果他/他跟着,那么他/他会得到正确的价值.. 这是// yyyy-mm-dd – SarwarCSE

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

1

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

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