/** * angular-strap * @version v2.2.1 - 2015-03-10 * @link http://mgcrea.github.io/angular-strap * @author Olivier Louvignes (olivier@mg-crea.com) * @license MIT License, http://www.opensource.org/licenses/MIT */ 'use strict'; angular.module('mgcrea.ngStrap.helpers.dateFormatter', []) .service('$dateFormatter', ["$locale", "dateFilter", function($locale, dateFilter) { // The unused `lang` arguments are on purpose. The default implementation does not // use them and it always uses the locale loaded into the `$locale` service. // Custom implementations might use it, thus allowing different directives to // have different languages. this.getDefaultLocale = function() { return $locale.id; }; // Format is either a data format name, e.g. "shortTime" or "fullDate", or a date format // Return either the corresponding date format or the given date format. this.getDatetimeFormat = function(format, lang) { return $locale.DATETIME_FORMATS[format] || format; }; this.weekdaysShort = function(lang) { return $locale.DATETIME_FORMATS.SHORTDAY; }; function splitTimeFormat(format) { return /(h+)([:\.])?(m+)[ ]?(a?)/i.exec(format).slice(1); } // h:mm a => h this.hoursFormat = function(timeFormat) { return splitTimeFormat(timeFormat)[0]; }; // h:mm a => mm this.minutesFormat = function(timeFormat) { return splitTimeFormat(timeFormat)[2]; }; // h:mm a => : this.timeSeparator = function(timeFormat) { return splitTimeFormat(timeFormat)[1]; }; // h:mm a => true, H.mm => false this.showAM = function(timeFormat) { return !!splitTimeFormat(timeFormat)[3]; }; this.formatDate = function(date, format, lang, timezone){ return dateFilter(date, format, timezone); }; }]);