将数字日期转换为文本日期的效率

Efficiency in converting numeric date to textual

本文关键字:日期 效率 文本 转换 数字      更新时间:2023-09-26

我有一个格式为MM/DD/YYYY的日期。然后我需要使用javascript将其转换为。(更确切的例子:05/25/2012-->"May 252012")我知道如何转换日期,但问题是:

是否有一种更有效的方法,无论是使用javascript函数还是其他方法,将MM/DD/YYYY转换为上述格式,而不是使用switch语句和串联字符串

您可能会发现jQuery UI的Datepicker中的parseDate和formatDate函数很吸引人,例如

var date = $.datepicker.parseDate('mm/dd/yy', '05/25/2012');
$.datepicker.formatDate('MM d yy', date);

这完全取决于你如何定义"高效":

  • 代码密度?-这是有效的imho
  • 速度和性能?-没有线索
  • 本地化?-支持,例如$(selector).datepicker($.datepicker.regional['fr']);*

通过访问数组,您可以执行此

var monthArray = ['January', 'February', ... , 'December'];

var date = "05/25/2012";
var dateParts = date.split('/');
var convertedDate = monthArray[parseInt(dateParts[0], 10)] + " " + dateParts[1] + ", " + dateParts[2];

奇怪的是,大约半小时前我刚刚发布了一个相关的问题。这是我正在使用的,但它也解析时间。

// Date m/d/Y Time h:m a
function parseDate(date,time) {
date = date.split("/");
time = time.split(" ");
hm = time[0].split(':'); 
if (parseInt(hm[0],10) == 12) {
    hm[0] = 0;
}
if (time[1] == 'pm') {
    hm[0] = parseInt(hm[0],10) + 12;
} else {
    hm[0] = parseInt(hm[0],10);
}
return new Date(
    parseInt(date[2],10), 
    parseInt(date[0],10)-1, 
    parseInt(date[1],10),
    hm[0],
    parseInt(hm[1],10)
);
}

因此,您可以很容易地删除time行,并获得以下。。。

function parseDate(date) {
  date = date.split("/");
  return new Date(
    parseInt(date[2],10), 
    parseInt(date[0],10)-1, 
    parseInt(date[1],10)
  );
}