diff --git a/src/core/pipes/pipes.module.ts b/src/core/pipes/pipes.module.ts index b8b197300..a45223af7 100644 --- a/src/core/pipes/pipes.module.ts +++ b/src/core/pipes/pipes.module.ts @@ -22,6 +22,7 @@ import { CoreFormatDatePipe } from './format-date'; import { CoreNoTagsPipe } from './no-tags'; import { CoreSecondsToHMSPipe } from './seconds-to-hms'; import { CoreTimeAgoPipe } from './time-ago'; +import { CoreToLocaleStringPipe } from './to-locale-string'; @NgModule({ declarations: [ @@ -33,6 +34,7 @@ import { CoreTimeAgoPipe } from './time-ago'; CoreNoTagsPipe, CoreSecondsToHMSPipe, CoreTimeAgoPipe, + CoreToLocaleStringPipe, ], exports: [ CoreBytesToSizePipe, @@ -43,6 +45,7 @@ import { CoreTimeAgoPipe } from './time-ago'; CoreNoTagsPipe, CoreSecondsToHMSPipe, CoreTimeAgoPipe, + CoreToLocaleStringPipe, ], }) export class CorePipesModule {} diff --git a/src/core/pipes/to-locale-string.ts b/src/core/pipes/to-locale-string.ts new file mode 100644 index 000000000..5783fea6c --- /dev/null +++ b/src/core/pipes/to-locale-string.ts @@ -0,0 +1,67 @@ +// (C) Copyright 2015 Moodle Pty Ltd. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import { Pipe, PipeTransform } from '@angular/core'; +import { CoreTimeUtils } from '@services/utils/time'; + +import { CoreLogger } from '@singletons/logger'; + +/** + * Filter to format a timestamp to a locale string. Timestamp can be in seconds or milliseconds. + * + * @deprecated since 3.6. Use coreFormatDate instead. + * This pipe wasn't removed in app 4.0 because some site plugins still used it. It will be removed in future versions. + */ +@Pipe({ + name: 'coreToLocaleString', +}) +export class CoreToLocaleStringPipe implements PipeTransform { + + protected logger: CoreLogger; + + constructor() { + this.logger = CoreLogger.getInstance('CoreToLocaleStringPipe'); + } + + /** + * Format a timestamp to a locale string. + * + * @param timestamp The timestamp (can be in seconds or milliseconds). + * @return Formatted time. + */ + transform(timestamp: number | string): string { + if (typeof timestamp == 'string') { + // Convert the value to a number. + const numberTimestamp = parseInt(timestamp, 10); + if (isNaN(numberTimestamp)) { + this.logger.error('Invalid value received', timestamp); + + return timestamp; + } + timestamp = numberTimestamp; + } + + if (timestamp < 0) { + // Date not valid. + return ''; + } + if (timestamp < 100000000000) { + // Timestamp is in seconds, convert it to milliseconds. + timestamp = timestamp * 1000; + } + + return CoreTimeUtils.userDate(timestamp, 'core.strftimedatetimeshort'); + } + +}