2012-09-20 185 views
1

我需要帮助转换此日期格式。 以下是我从服务器收到的日期字符串,它可以是M/DD/YYYYM/D/YYYYMM/D/YYYYMM/DD/YYYY需要帮助从此日期格式中提取日期,月份和年份

编辑:对不起,我的坏。上面的格式后,有一个时间HH:MM:SS AM额外的绳子,让我收到完整的字符串将M/D/YYYY HH:MM:SS AM

我现在的问题是我用String.substring(X,Y)来提取日期,月份和年份。

到目前为止,我只设法确定“/”的位置,但我仍然在考虑如何在子字符串方法中使用它。

var separators = []; 
for(var b = 0, c = String.length; b < c; b++){ 
    if(String[b] === '/'){ 
     separators.push(b); 
    } 
} 

我很困惑如何动态地提取日期和月份,然后在单个数字前加上“0”,所以我非常感谢任何帮助。先谢谢你。

+0

在字符串中使用split函数dateString.split(“/”); – Diode

+0

我[更新我的答案](http://stackoverflow.com/a/12511575/601179)根据你的编辑 – gdoron

回答

2
var dt = "10/6/2012 12:34:56 AM".split(' '); 
dt = dt[0].split('/'); 

// dt[0] => month 
// dt[1] => day 
// dt[2] => year 

它的工作原理与上述任何格式的 - M/DD/YYYYM/D/YYYYMM/D/YYYYMM/DD/YYYY - (它比使用子更容易)

然后加垫到一个月,每天只需用slice()像这样

dt[0] = ("0"+ dt[0]).slice(-2); 
dt[1] = ("0"+ dt[1]).slice(-2); 

,并获得一个填充数据只是重新加入该组的部分

dt = dt.join('/'); 

例jsbin:http://jsbin.com/exodos/2/edit

+0

对不起,我错过了一些问题的信息。谢谢你告诉我使用'split',但它似乎无法与我更新的字符串一起使用。 –

+0

看到我的更新:) – fcalderan

+0

它的工作原理!非常感谢=) –

0
var date= '1/3/2012'//your date string 
,dateArray = date.split("/"); 
for(var k =0; k < 2; k++){ 
if((dateArray[k] + "").length ==1){ 
     dateArray[k] = "0"+dateArray[k]; 
} 
} 
var newDate= dateArray.join("/"); 

jsfiddle

+0

这是一个很多代码来完成这么简单的任务,你不觉得吗? – gdoron

+0

是的,但我只是提供了一个替代选项和代码是自我解释。 – Anoop

0

正则表达式可以做的工作。下面不关心它是一个日期为m/d/y还是y/d/m /或者其他,它只是用一个前导零填充单个数字的数字。它只适用于整数,它在小数秒时表现不好。

function fixDate(d) { 
    var re = /\d+/g; 
    return d.replace(re, function(s) { 
    return (s < 10? '0' : '') + +s; 
    }); 
} 

fixDate('2/3/2012 3:5:3 am'); // 02/03/2012 03:05:03 am 
相关问题