我有一串日期时间,如下所示:
2017-04-17 18:26:03
我可以使用javascript重新格式化并缩短它:
var input = '2017-04-17 18:26:03';
var result = input.replace(/^(\d+)-(\d+)-(\d+)(.*):\d+$/, '$3/$2/$1');
console.log(result);
/////Prints This: 17/04/2017///
现在,我需要让它更短:
17/04/17
有人可以就此提出建议吗?
任何帮助都将不胜感激。
编辑:我不想使用像moment.js或任何其他库那样的东西,因为它太过分了。
答案 0 :(得分:2)
你是对的,moment.js做得太过分了。但我不确定正则表达式是最快的方法,它不是最具可读性的。而且Date对象有方法可以做到这一点。例如,您可以使用toLocaleDateString():
const date = new Date('2017-04-17 18:26:03');
const formattedDate = date.toLocaleDateString("en-GB", {
year: "2-digit",
month: "numeric",
day: "numeric"
});
console.log( formattedDate ); // "17/04/17"
如果您关注性能,在格式化大量日期时,最好创建一个Intl.DateTimeFormat对象并使用其format属性提供的功能:
const date = new Date('2017-04-17 18:26:03');
const dateFormatter = new Intl.DateTimeFormat("en-GB", {
year: "2-digit",
month: "numeric",
day: "numeric"
});
const formattedDate = dateFormatter.format(date);
console.log( formattedDate ); // "17/04/17"
答案 1 :(得分:1)
如果您正在使用正则表达式,那么在构建字符串时,您可以采用模数为100的年份:
let match = input.match(/^(\d+)-(\d+)-(\d+)\s+(\d+):(\d+):(\d+)$/)
let result = `${match[3]}/${match[2]}/${match[1] % 100}`
console.log(result)
//=> '17/4/17'