我正在为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

10-05 20:53
查看更多