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

时间:2012-01-06 20:54:35

标签: javascript performance date

我的日期格式为MM / DD / YYYY。我需要使用javascript将其转换为。 (更确切的例子:05/25/2012 - >“2012年5月25日”)我知道如何转换日期,但问题是:

是否有更有效的方法,无论是使用javascript函数还是其他东西,将MM / DD / YYYY转换为上面的格式而不是使用switch语句并连接字符串?

3 个答案:

答案 0 :(得分:1)

您可能会发现parseDate formatDate中的DatepickerjQuery UI函数具有吸引力,例如

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

这完全取决于你如何定义'有效':

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

答案 1 :(得分:0)

奇怪的是,我刚在半小时前发布了related question。这是我正在使用的,但它也解析了一段时间。

// 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)
  );

}

答案 2 :(得分:0)

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

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];