2015-10-12 61 views
-2

我想知道是否有任何方法可以从日期字符串中提取日期格式。如何从日期字符串通过jquery或javascript提取日期格式

例如假设我们有一个日期字符串,如“星期三,2015年9月23日 - 20:15”

毫无疑问,这表达的是,通过格式格式化字符串的日期对象模式。

我需要一个方法可以告诉我什么是格式模式。

+0

你是什么意思的“日期格式”?你只想得到'09/23/2015 /'吗?或者你想要一个日期对象?不知道你想要什么。并且你想使用JavaScript吗? –

+0

我的意思是,例如,您使用“Y-M-D”格式化日期到日期字符串,如“2015-10-20”。现在我想给“2015-10-20”方法作为参数,方法返回“YMD作为格式模式 – Mehrdad201

回答

0

所以Date.parse()做了一些很酷的事情,但它看起来不像它的日期字符串。如果你知道它将始终是这种格式,你可以使用正则表达式!

你仍然需要知道你自己的格式是什么。在你的情况下,你有DDD, MM/DD/YYYY - HH:mm或类似的东西。一个匹配的正则表达式是:\D*(\d+)/(\d+)/(\d+)\D+(\d+):(\d+)

所以你需要对一个字符串运行它,然后获取结果并把它放到一个新的Date()中。这里有一个完整的示例:

var rgx = /\D*(\d+)\/(\d+)\/(\d+)\D+(\d+):(\d+)/gi; 
var str = "Wed, 09/23/2015 - 20:15"; 
var matches = rgx.exec(str); 

console.log(matches); 
/* 
[ 'Wed, 09/23/2015 - 20:15', 
    '09', 
    '23', 
    '2015', 
    '20', 
    '15', 
    index: 0, 
    input: 'Wed, 09/23/2015 - 20:15' ] 
*/ 

// new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]); 
var myDate = new Date(matches[3], matches[1], matches[2], matches[4], matches[5]); 
console.log(myDate); 
// Fri Oct 23 2015 20:15:00 GMT-0700 (Pacific Daylight Time) 

你也许可以找到一个图书馆,在那里,将采取随机日期格式字符串(即DDD, MM/DD/YYYY - HH:mm),并为您创建一个新的Date对象,但我一直犹豫像这样的图书馆引入像我上面所做的那样简单的事情。

+0

你知道,它是动态的,在这个例子中参数是”Wed,09/23/2015 - 20: 15“,但可能参数是”09/23/2015“,所以方法必须给我们其他日期格式作为返回值,因此我认为我们不能使用一个常量正则表达式 您的想法是什么? – Mehrdad201

+0

您需要一套正则表达式对于你期望的模式类型可能是这样的,所以你可以先匹配它,如果它匹配,那么你就可以执行它,你给出的第二个日期实际上可以和Date.parse()一起工作。并且容易出错,所以你的主要努力应该试图锁定哪些日期格式是允许的。如果这是用户输入,只需提供一个日期选择器或让他们选择一种格式。 –