2013-09-01 127 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();