2012-12-24 75 views
0

当与一个字符串写入新的日期对象,一个可以为它写:从是日/月/年的形式获取正确的日期

var someDay = new Date("12/01/2012"); 

这相当于12月1日2012年

然而,如果用户必须在格式不是月/日/年,而是日/月/年的网站上填写日期,该怎么办?那么如何才能创建一个具有正确日期的日期对象呢?

+2

使用日期选择器来确保日期格式 –

+1

您可以给他多个输入,一个为年,一个为月等 并创建日期,如'new Date(year,month,day)' – C5H8NNaO4

回答

0

如果您从另一个网站获取数据作为字符串,那么您需要知道该网站为您提供日期的格式。没有办法解决这个问题,因为D-M-Y和M-D-Y是无法区分的。即使是Y-M-D,如果他们在一年中使用两位数字格式,也无法区分。

这还没有经过测试,但最糟糕的是一般的想法应该可以解决您的问题。

var pattern = /^(\d+)\b(\d+)\b(\d+)$/; 
if (!pattern.test(dateString)) 
    return null; 
var matches = dateString.match(pattern); 
if (siteUsesDMY) 
    return new Date(matches[2], matches[1]-1, matches[0]); 
if (siteUsesMDY) 
    return new Date(matches[2], matches[0]-1, matches[1]); 
... 

模式:该模式支持日期的任何数字表示,假设它具有每个单元之间的断裂字符。如果您需要支持没有突破性特征的网站,则需要使用与该网站的确切格式相匹配的不同模式(即:网站发送DDMMYYYY,然后模式为/^(\d{2})(\d{2})(\d{4})$/)。

还修复了日期创建中的月份参数,因为我刚刚记住JavaScript使用0-11个月。

相关问题