我正在为angularJS中的一些日期时间格式而苦苦挣扎。
我想获得以下日期格式25/11/1990 14:35
基于包含string
的日期时间"1990-11-25 14:35:00"
,而不必在控制器中创建Date
对象。
如果输入是Date
对象或者String
不包含小时或分钟,则angular似乎只能实现正确的日期时间格式。
index.html
<div ng-app ng-controller="Ctrl">
String: {{'1990-11-25 14:35:00' | date:"dd/MM/yyyy HH:mm"}}<br>
string date: {{'1990-11-25' | date:"dd/MM/yyyy"}}<br>
Date: {{myDate | date:"dd/MM/yyyy HH:mm"}}
</div>
controller.js
function Ctrl($scope)
{
$scope.myDate = new Date("1990-11-25 14:35:00");
}
输出量
string: 1990-11-25 14:35:00
string date: 25/11/1990
date: 25/11/1990 14:35
http://jsfiddle.net/CkBWL/612/
根据angular's documentation on the date filter,
日期时间字符串允许的唯一格式为:
日期时间字符串格式(例如yyyy-MM-ddTHH:mm:ss.sssZ及其较短的版本,例如yyyy-MM-ddTHH:mmZ,yyyy-MM-dd或yyyyMMddTHHmmssZ
有没有一种方法可以直接在html中将包含
"1990-11-25 14:35:00"
的字符串格式化为25/11/1990 14:35
而不需要创建Date
对象?谢谢你的帮助 !
最佳答案
如果输入是Date对象或String不包含小时或分钟,则angular似乎只能实现正确的日期时间格式。
如果希望将字符串识别为日期,则应使用根据ISO8601标准设置格式的日期。因此1990-11-25 14:35:00
变为1990-11-25T14:35:00Z
,如果需要,您还可以包括偏移量(在规范中)。然后,您可以使用Angular中内置的现有date filter。
从参数date
上的date filter documentation
要格式化为Date对象的日期,毫秒(字符串或数字)或各种ISO 8601日期时间字符串格式(例如yyyy-MM-ddTHH:mm:ss.sssZ及其更短的版本,例如yyyy-MM-ddTHH:mmZ,yyyy-MM -dd或yyyyMMddTHHmmssZ)。如果在字符串输入中未指定时区,则该时间将视为本地时区。
代码更新
<div ng-app ng-controller="Ctrl">
String: {{'1990-11-25T14:35:00Z' | date:"dd/MM/yyyy HH:mm"}}
<br>
Date: {{date | date:"dd/MM/yyyy HH:mm"}}
</div>
function Ctrl($scope)
{
$scope.date = "1990-11-25T14:35:00Z";
}
Updated JsFiddle