使用正则表达式,如何将日期时间字符串转换为短日期格式?

时间:2013-12-10 15:46:37

标签: javascript regex string

我正在使用AngularJS,我们有一个使用存储的Regex转换绑定值的指令。因此,如果我创建此标记:<span ng-pattern="regex.Zip"></span>,则Angular将引用存储的正则表达式并进行即时转换。我需要一个正则表达式来格式化日期。

示例字符串:

2014-01-01T00:00:00.0000000

期望的输出:

01/01/2014

BONUS所需的输出(如果可能,仅使用正则表达式)!:

01/01/2014 12:00am

这需要使用Javascript。

3 个答案:

答案 0 :(得分:2)

使用正则表达式:

var longdate = '2014-01-01T00:00:00.0000000';
var shortdate = longdate.replace(
    /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}).(\d{7})$/,
    '$3/$2/$1'
);
console.log(shortdate); // 01/01/2014

使用Date对象:

这允许您以12小时格式获得小时。

var longdate = '2014-01-01T00:00:00.0000000';

var date = new Date(longdate);

var day = ('0' + date.getDate()).slice(-2);        // add a leading 0
var mon = ('0' + date.getMonth()+1).slice(-2);     // month go from 0 to 11
var yea = date.getFullYear();
var hou = ('0' + date.getUTCHours()%12).slice(-2); // back to 0 when we reach 12
var min = ('0' + date.getMinutes()).slice(-2);
var suf = date.getUTCHours() >= 12 ? 'pm' : 'am';
var shortdate = day+'/'+mon+'/'+yea+' '+hou+':'+min+suf;

console.log(shortdate); // 01/00/2014 00:00am 

答案 1 :(得分:1)

没有正则表达式的JavaScript代码

var d = new Date('2014-01-01T00:00:00.0000000'); 
var date = d.toLocaleDateString();  // 01/01/2014

答案 2 :(得分:0)

这是python的解决方案。

from datetime import datetime

raw = '2014-01-01T00:00:00.0000000'
dt = datetime.strptime(raw, '%Y-%m-%dT%H:%M:%S.%f0') 
print dt.strftime('%d/%m/%Y %H:%M%p')

我正在接受字符串,将其更改为日期时间对象,然后格式化它。你很容易理解它,更多地查看here