InvalidPipeArgument: '2017-12-05 05:30:00 для канала' DatePipe '- Safari - PullRequest
0 голосов
/ 02 июня 2018

Исключение

InvalidPipeArgument: '2017-12-05 05:30:00 для канала' DatePipe '

Код

Следующий код работает нормально в браузере Chrome Mac Machine, но в Safari он не работает:

import { Pipe, PipeTransform } from '@angular/core';
import { DatePipe } from '@angular/common';
import * as moment from 'moment';

@Pipe({
    name: 'dateCulturePipe',
})
export class dateCulturePipe implements PipeTransform {
    transform(value: string) {
        if (value) {
            value = moment.utc(value).local().format('YYYY-MM-DD HH:mm:ss');
        }

        return value;
    }
}

Использование

{{ (item.Date | dateCulturePipe) | date:'dd-MMM-yyyy HH:mm' }}

Значение

Date

    2018-06-01 11:39:41.880
    2018-05-25 10:39:54.597
    NULL
    2018-05-23 09:33:00.000
    2018-05-22 13:04:20.190
    2018-05-22 11:20:14.530
    2018-05-19 11:55:53.750
    2018-05-19 11:55:04.117
    2018-05-18 11:34:06.190
    2018-05-10 11:57:18.507
    2018-05-10 11:44:25.893
    2018-05-10 11:42:47.467
    2018-05-10 11:42:21.197
    2018-05-10 11:41:46.363
    2018-05-10 11:40:42.483
    NULL
    NULL
    2018-05-04 11:04:00.000
    NULL
    2018-05-03 11:04:00.000
    NULL

Проверено - Не знаю, где изменить

https://github.com/angular/angular/issues/12334

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Браузер Safari выдает ошибку, когда Дата имеет формат «2017-11-02 00: 00: 00.000».Требуется дата в формате T, то есть «2017-11-02T00: 00: 00» вместо пробела между датой и временем.

Приведенное выше решение с регулярным выражением, совпадающим с пробелом и заменяющее его буквой "T", будет работать, и проблема должна быть решена в Safari.

0 голосов
/ 02 июня 2018

Вы можете обратиться к этой конкретной проблеме

Invalid argument for pipe 'DatePipe' - Safari cannot parse Date offsets

Чтобы исправить это, замените строку

'2017-11-02 00:00:00.000'.replace(/\s/g, "T")
...