2014-04-01 51 views
1

我有這種奇怪的日期格式,如dMMMyyyy(例如2Dec2013)。 我想在我的JavaScript來創建Date對象代碼:在谷歌瀏覽器使用JavaScript在FireFox中解析日期

var value = "2Apr2014"; 
var date = new Date(value); 
alert(date.getTime()); 

example

此代碼工作正常,但在火狐返回Null

燦任何人都可以提出解決此問題的建議

謝謝。

+2

嘗試'VAR值=「2014年4月2日」;'將在Chrome和Firefox瀏覽器。 –

+0

請參閱['Date.parse'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse)獲取支持的格式 – megawac

+2

我建議使用日期庫像'momentjs'如果你想使用這樣的格式 – megawac

回答

1

如何只解析成new Date接受的價值觀,這樣,它的工作原理無處不在

var value = "02Apr2014"; 

var m = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; 

var month = value.replace(/\d/g,''), 
    parts = value.split(month), 
    day = parseInt(parts.shift(), 10), 
    year = parseInt(parts.pop(), 10); 

var date = new Date(year, m.indexOf(month), day); 

FIDDLE

1

我會建議使用類似jQuery datepicker的東西來解析你的日期。

我沒有測試它,但它似乎你需要這樣的:

var currentDate = $.datepicker.parseDate("dMyy", "2Apr2014"); 

jsFiddle

要知道的:

  • d - 一個月的一天(無前導零)
  • dd - 月份的日期(兩位數)
  • 米 - 月份名稱短
  • Ÿ - 年(兩位數)
  • YY - 年(四位數)

但是,如果由於某種原因,你真的想要自己做,然後你可以看看這個鏈接:http://jibbering.com/faq/#parseDate

它有一些有趣的例子解析日期。

雖然不正是你想要的,在Extended ISO 8601 local Date format YYYY-MM-DD例子可能是從哪裏開始一個很好的跡象:

/**Parses string formatted as YYYY-MM-DD to a Date object. 
    * If the supplied string does not match the format, an 
    * invalid Date (value NaN) is returned. 
    * @param {string} dateStringInRange format YYYY-MM-DD, with year in 
    * range of 0000-9999, inclusive. 
    * @return {Date} Date object representing the string. 
    */ 
    function parseISO8601(dateStringInRange) { 
    var isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/, 
     date = new Date(NaN), month, 
     parts = isoExp.exec(dateStringInRange); 

    if(parts) { 
     month = +parts[2]; 
     date.setFullYear(parts[1], month - 1, parts[3]); 
     if(month != date.getMonth() + 1) { 
     date.setTime(NaN); 
     } 
    } 
    return date; 
    }