<div class="row" ng-repeat="time in viewModel.times"> <div class="col-md-6"> <time datetime="{{time}}">{{ time | utctolocal }}</time> </div> </div>Basic usage is thus: create the filter, add the script tag to load the filter, add the module to be a dependency on the app.
angular.module('intPonfilters', []) .filter('utctolocal', function () { var LeadingZero = function (val) { return (val < 10) ? "0" + val : val; }, ToDateString = function (dateObj, dateFormat) { var curr_year = dateObj.getFullYear(), curr_month = LeadingZero(dateObj.getMonth() + 1), curr_date = LeadingZero(dateObj.getDate()), curr_hour = LeadingZero(dateObj.getHours()), curr_min = LeadingZero(dateObj.getMinutes()), curr_sec = LeadingZero(dateObj.getSeconds()), curr_ampm = "AM"; if (curr_hour > 11) { curr_ampm = "PM"; curr_hour = (curr_hour == 12) ? 12 : curr_hour - 12; } var timestamp = curr_year + "-" + curr_month + "-" + curr_date + " " + curr_hour + ":" + curr_min + ":" + curr_sec + " " + curr_ampm + " " + LocalTimeZone(); return timestamp; }, LocalTimeZone = function() { // From http://stackoverflow.com/questions/2897478/get-client-timezone-not-gmt-offset-amount-in-js var now = new Date().toString(), timezone = now.indexOf('(') > -1 ? //now.match(/\([^\)]+\)/)[0] : // Uncomment this line to return the full time zone text now.match(/\([^\)]+\)/)[0].match(/[A-Z]/g).join('') : // Uncomment this line to return the full time zone abbreviation now.match(/[A-Z]{3,4}/)[0]; if (timezone == "GMT" && /(GMT\W*\d{4})/.test(now)) timezone = RegExp.$1; return timezone; }; return function (input) { var inputDate = new Date(input); var dateString = ToDateString(inputDate); return dateString; }; });
An example can be found in my UTCtoLocalAngularJS GitHub repository.
No comments:
Post a Comment