import angular from 'angular' import _ from 'lodash' import { DateTime } from 'luxon' // This filter takes a datetime string with UTC offset, like `2015-09-30T00:00:00-08:00` // and converts it to a short format with time zone code displayed, like `12:00 AM AKST`. // It returns an empty string if the input is bad (undefined or empty string). angular.module('app').filter('formatDate', function formatDate() { return (date) => { if (_.isEmpty(date)) { return '' } const formattedDateTime = DateTime.fromISO(date, { setZone: true }).toFormat('M/dd/yy') return formattedDateTime } }) angular.module('app').filter('formatTimeWithTimeZone', ['dateTimeZoneFactory', function formatTimeWithTimeZone(dateTimeZoneFactory) { return (date) => { if (_.isEmpty(date)) { return '' } // Parse zone preserves the string date's offset --ignoring offset in locale) const dateTimeZone = DateTime.fromISO(date, { setZone: true }) const formattedTime = dateTimeZone.toFormat('h:mm a') // NOTE: getTimeZone expects a luxonDate const formattedZone = dateTimeZoneFactory.getTimeZone(dateTimeZone).display return `${formattedTime} ${formattedZone}` } }]) angular.module('app').filter('formatDateTimeWithTimeZone', ['dateTimeZoneFactory', function formatDateTimeWithTimeZone(dateTimeZoneFactory) { return (date) => { if (_.isEmpty(date)) { return '' } // Parse zone preserves the string date's offset --ignoring offset in locale) const dateTimeZone = DateTime.fromISO(date, { setZone: true }) const formattedDateTime = DateTime.fromISO(date, { setZone: true }).toFormat('M/dd/yy h:mm a') // NOTE: getTimeZone expects a luxonDate const formattedZone = dateTimeZoneFactory.getTimeZone(dateTimeZone).display return `${formattedDateTime} ${formattedZone}` } }])