0

我有两个日期:

var first = '21-11-2012';
var second = '03-11-2012';

像这样格式化它的最佳方法是什么:

var first = '2012-11-21';
var second = '2012-11-03';

我应该使用 jQuery 还是仅使用 JavaScript?

4

3 回答 3

5

您不需要 jQuery,只需像这样使用 JavaScript:

function formatDate(d){
    return d.split('-').reverse().join('-');
}

虽然如果您想要更多可重用的代码,请考虑使用JavaScript 日期对象

于 2012-06-23T14:27:49.893 回答
2

无需为基本的字符串操作考虑 jQuery:标准的 JS String 方法绰绰有余,(我认为)这就是 jQuery 实际上没有等效方法的原因。

其他答案中的正则表达式.replace()或拆分/反向/连接概念都可以在一行中完成。我建议熟悉我链接到的 MDN 页面上的方法,但同时:

first = first.replace(/^(\d\d)-(\d\d)-(\d\d\d\d)$/,"$3-$2-$1");

(相同的second- 如果需要,封装在一个函数中。)

这使用正则表达式来匹配日期的不同部分并将它们反转。

更新 - 根据要求,我使用的正则表达式的解释:

^            // match beginning of string
(\d\d)       // match two digits, and capture them for use
             // in replacement expression as $1
-            // match the literal hyphen character
(\d\d)       // match two digits, and capture for use as $2
-            // match the literal hyphen character
(\d\d\d\d)   // match four digits, and capture for use as $3
$            // match end of string

因为模式从字符串的开头到结尾匹配,所以整个字符串将被替换。括号中的表达式部分是“捕获的”,如果在替换字符串中使用,可以称为 $1、$2 等(按它们在表达式中出现的顺序编号),因此"$3-$2-$1"颠倒这些捕获部分的顺序和在它们之间放置连字符。(如果输入字符串不符合该格式,则正则表达式将不匹配并且不会进行替换。)

于 2012-06-23T14:42:56.903 回答
1
first=first.split("-").reverse().join("-")
second=second.split("-").reverse().join("-")
于 2012-06-23T14:27:22.423 回答