我有一个类,其中包含许多其他属性中的日期:
Class example {
Date lastUpdate;
}
所以每当有变化时我都会通过
更新lastUpdatelastUpdate = new Date();
获取新的时间戳。在数据库中,它会以02-OCT-14 12.20.35.559000000 PM
正确更新。但是当我尝试通过调用example.lastUpdate
使用角度JS在UI上显示它时,它只显示10/02/2014 12:20:35
。我需要知道它是AM还是PM我该如何添加?
答案 0 :(得分:1)
你可以为此创建和使用Angular你自己的角度过滤器,让我们称之为AMPMDateFormat,你可以使用这种方式{{example.lastUpdate | AMPMDateFormat}}在当前显示的值旁边显示de AM或PM值。
var app = angular.module('your-app', []);
app.filter("AMPMDateFormat", function () {
return function(input) {
//here you can use [Moment.js][1]
return moment(input).format();
//or you can parse the input value by yourself
//something like this
var parts = input.split(' ');
var datePart = parts[0];
var timeParts = parts[1].split(':');
var hours = parseInt(timeParts[0]);
var meridian = (hours < 12) ? "AM" : "PM";
if (hours == 0) hours = 12;
if (hours > 12) hours -= 12;
return datePart + ", " + hours + ":" + timeParts[1] + " " + meridian;
}
});
希望这会有所帮助。 !重要。请在代码中取决于输入值的格式。我假设输入格式总是“dd / MM / yyyy hh:mm:ss”,就像你说的那样是它当前显示的方式。如果格式是其他的,这个代码不起作用!但这个想法仍然有效。
答案 1 :(得分:1)
Angularjs允许您在UI中设置日期格式。有关详细信息,请参阅此documentation。
因此,您真的不需要执行此功能。您可以在HTML中格式化。
示例控制器代码段
angular
.module("myApp")
.controller('MyController',
[ '$scope', function($scope) {
$scope.myDate = new Date();
}]
);
示例UI代码段
<p>{{myDate | date:'yyyy-MM-dd HH:mm:ss a'}}</p>
在上面,myDate
是Controller中的一个日期,它将以给定的格式显示在HTML中。 a
部分是AM / PM标记。因此,该值例如如下所示:2014-10-07 10:10:02 AM
。