krs8785
krs8785

Reputation: 1147

Adding Am/Pm to timestamp

I have a class which contains date among many other attributes:

Class example {
   Date lastUpdate;
}

So everytime there is change I update the lastUpdate by

lastUpdate = new Date();

to get the new time stamp. In the database it gets updated correctly as 02-OCT-14 12.20.35.559000000 PM. However when I try to display it on the UI using angular JS by calling example.lastUpdate it only displays 10/02/2014 12:20:35. I need to know whether it was AM or PM how do I add that ?

Upvotes: 0

Views: 3290

Answers (2)

whyceewhite
whyceewhite

Reputation: 6425

Angularjs allows you to format your date in the UI. See this documentation for more information.

Therefore, you don't really need a function to do this. You could format this in your HTML.

Example Controller snippet:

angular
  .module("myApp")
  .controller('MyController',
    [ '$scope', function($scope) {

      $scope.myDate = new Date();      
    }]
  );

Example UI snippet:

<p>{{myDate | date:'yyyy-MM-dd HH:mm:ss a'}}</p>

In the above, myDate is a Date in the Controller that will display in the HTML in the format given. The a portion is the AM/PM marker. Thus, the value would, for example, look like this: 2014-10-07 10:10:02 AM.

Upvotes: 1

sergio
sergio

Reputation: 639

you can create and use Angular your own angular filter for this, let's call it AMPMDateFormat and you can use this way {{ example.lastUpdate | AMPMDateFormat }} to display de AM or PM value next the current displayed value.

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;

    }
});

Hope this helps. !Important. Please, in the code all depends on the format of the input value. I'm assuming that the input format will always be "dd/MM/yyyy hh:mm:ss" just like you said that is the way that it's currently displayed. If the format is other this code doesn't works! But the idea still working.

Upvotes: 1

Related Questions