将Am / Pm添加到时间戳

时间:2014-10-07 18:03:14

标签: angularjs date timestamp

我有一个类,其中包含许多其他属性中的日期:

Class example {
   Date lastUpdate;
}

所以每当有变化时我都会通过

更新lastUpdate
lastUpdate = new Date();

获取新的时间戳。在数据库中,它会以02-OCT-14 12.20.35.559000000 PM正确更新。但是当我尝试通过调用example.lastUpdate使用角度JS在UI上显示它时,它只显示10/02/2014 12:20:35。我需要知道它是AM还是PM我该如何添加?

2 个答案:

答案 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