1

我需要帮助转换此日期格式。这是我从服务器收到的日期字符串,它可以是M/DD/YYYYorM/D/YYYYMM/D/YYYYor MM/DD/YYYY

编辑:对不起,我的错。在上述格式之后,还有额外的时间字符串,HH:MM:SS AM所以我收到的完整字符串将是M/D/YYYY HH:MM:SS AM

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

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

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

我很困惑如何动态提取日期和月份,然后在单个数字前面填充“0”,所以我很感激任何帮助。先感谢您。

4

3 回答 3

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/YYYYor M/D/YYYYor MM/D/YYYYor MM/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

于 2012-09-20T11:22:28.623 回答
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
于 2012-09-20T11:59:53.887 回答
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

于 2012-09-20T11:25:54.577 回答