Javascript:将datetime转换为更短的格式?

时间:2017-04-24 14:49:34

标签: javascript datetime

我有一串日期时间,如下所示:

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或任何其他库那样的东西,因为它太过分了。

2 个答案:

答案 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'