我正在使用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。
答案 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
这允许您以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