我有两个日期:
var first = '21-11-2012';
var second = '03-11-2012';
像这样格式化它的最佳方法是什么:
var first = '2012-11-21';
var second = '2012-11-03';
我应该使用 jQuery 还是仅使用 JavaScript?
我有两个日期:
var first = '21-11-2012';
var second = '03-11-2012';
像这样格式化它的最佳方法是什么:
var first = '2012-11-21';
var second = '2012-11-03';
我应该使用 jQuery 还是仅使用 JavaScript?
您不需要 jQuery,只需像这样使用 JavaScript:
function formatDate(d){
return d.split('-').reverse().join('-');
}
虽然如果您想要更多可重用的代码,请考虑使用JavaScript 日期对象。
无需为基本的字符串操作考虑 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"
颠倒这些捕获部分的顺序和在它们之间放置连字符。(如果输入字符串不符合该格式,则正则表达式将不匹配并且不会进行替换。)
first=first.split("-").reverse().join("-")
second=second.split("-").reverse().join("-")