2012-08-29 165 views
1

我想以格式ddMMyyhhmm解析日期(例如,2804121530表示2012年4月28日下午3:30),以javascript日期()对象。以给定格式解析字符串

是否有任何oneliner解决方案?我在寻找的那种东西:

var date = Date.parse('2804121530', 'ddMMyyhhmm'); 

var date = new Date('2804121530', 'ddMMyyhhmm'); 

感谢您的帮助!

+2

没有这样的内置功能,但你可以看看[这个问题](http://stackoverflow.com/questions/476105/how-can-i-convert-string-to-datetime-with-format-specification-in-javascript) – Witcher42

+1

Hi bellow链接可能对您有用 http://stackoverflow.com/问题/ 1056728/formatting-a-date-in-javascript –

回答

2

这里有用的图书馆是DateJs。只需添加一个参考:

<script src="http://datejs.googlecode.com/files/date.js" 
     type="text/javascript"></script> 

,并使用Date.parseExact

var dateStr = '2804121530'; 
var date = Date.parseExact(dateStr, 'ddMMyyHHmm'); 
0
(new Date(1381344723000)).toUTCString() 

纠正我,如果“M拨错......

+0

James拥有*字符串*“'2804121530' ',所以我不认为这有多大帮助。 – Kobi

+0

对,我想这个参数是自时代以来的秒/毫秒。在我的情况下,这是一个格式为ddMMyyhhmm的日期字符串。 – James

2

对于一个快速的解决方案,你可以制动该字符串成片,并从这些作品

function myDateFormat(myDate){ 
    var day = myDate[0]+''+myDate[1]; 
    var month = parseInt(myDate[2]+''+myDate[3], 10) - 1; 
    var year = '20'+myDate[4]+''+myDate[5]; 
    var hour = myDate[6]+''+myDate[7]; 
    var minute = myDate[8]+''+myDate[9]; 
    return new Date(year,month,day,hour,minute,0,0); 
} 

var myDate = myDateFormat('2804121530'); 

或傻笑解决方案创建日期:

function myDateFormat(myDate){ 
    return new Date(('20'+myDate.slice(4,6)),(parseInt(myDate.slice(2,4), 10)-1),myDate.slice(0,2),myDate.slice(6,8),myDate.slice(8,10),0,0); 
} 
var myDate = myDateFormat('2804121530'); 
+1

您需要在本月的“+ 1”(它基于零),所以您必须至少解析(抱歉 - -1':/')。此外,你可以使用[string.slice](http://stackoverflow.com/q/2243824/7586)删除一些丑陋。 – Kobi

+2

加了'-1' :),因为'Date'从0开始 –