Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将数字日期转换为文本日期的效率_Javascript_Performance_Date - Fatal编程技术网

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

Javascript 将数字日期转换为文本日期的效率,javascript,performance,date,Javascript,Performance,Date,我有一个格式为MM/DD/YYYY的日期。然后我需要使用javascript将其转换为。(更确切的例子:2012年5月25日-->“2012年5月25日”)我知道如何转换日期,但问题是: 是否有一种更有效的方法,无论是使用javascript函数还是其他方法,将MM/DD/YYYY转换为上述格式,而不是使用switch语句和串接字符串?奇怪的是,我半小时前刚刚发布了一篇文章。这是我正在使用的,但它也解析时间 // Date m/d/Y Time h:m a function parseDate(

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


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

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

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

}
因此,您可以轻松删除
时间
行,并具有以下功能

function parseDate(date) {

  date = date.split("/");

  return new Date(
    parseInt(date[2],10), 
    parseInt(date[0],10)-1, 
    parseInt(date[1],10)
  );

}

通过访问阵列,您可以做到这一点

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];
您可能会在以下内容中找到和功能:

var date = $.datepicker.parseDate('mm/dd/yy', '05/25/2012');
$.datepicker.formatDate('MM d yy', date);
这完全取决于你如何定义“高效”:

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

date.js库(任意对任意,非常灵活)。更简单,但速度可能更慢。在使用
parseInt(string[,radix])
函数时,始终添加
radix
参数,因为所有以“0”开头的字符串都将被解释为八进制(除非以“0x”开头,否则将被解释为十六进制)。参考:很好的代码,类似于我已经拥有的。但我正在寻找一些东西,以字符串形式给出实际日期,如“2012年3月20日”。如果有内置函数,我想使用内置函数,而不是对该月的数字运行switch语句。@matsev从现在起我肯定会这样做。提交后我立即返回并编辑了它。事实上,我刚刚了解到这一点。比switch语句更有效。如果找不到库函数,我将使用它。只需一个编辑:var convertedDate=monthArray[parseInt(dateParts[0],10)-1]+。。。如果没有'-1',它将在下个月发出。否则这就行了。