web-dev-qa-db-ja.com

Angular 2日付からミリ秒を表示する方法は?

時間の表示にカスタムパイプを使用していましたが、ミリ秒も表示できるように変更しました。

{{log.LogDate|jsonDate|date:'dd.MM.yyyy   HH:mm:ss.sss'}}

パイプ自体:

if (typeof (value) === 'string') {
        if (value.includes('/Date('))
            return  new Date(parseInt(value.substr(6)));
    }
    return value;

ただし、ミリ秒には秒の値があります。

log.LogDate:2017-05-08T15:45:38.2527293+ 02:00

パイプからの出力:08.05.2017 15:45:38.38

完全なjsonDateパイプ(形式なし):2017-05-08T15:45:38.2527293 + 02:00

私はJavaScriptを使い始めたばかりですが、これがJavaScriptであるか、Angularの問題であるかはわかりませんが、Angular内で機能させたいと思います。パイプを使用してこれを行うことは可能ですか?またはこれを行う別の/より良い方法はありますか?

9
Schattenjäger

angular 5なので、SSSを使用して日付にミリ秒を追加できます。
参照 https://angular.io/api/common/DatePipe


そのため、例は次のようになります

{{log.LogDate|jsonDate|date:'dd.MM.yyyy   HH:mm:ss.SSS'}}



angular 5の変更ログ:
-[...]
-秒の小数部がSからSSSの形式でサポートされるようになりました。
-[...]

9
Akora

これは、Angular問題です。AngularJSはミリ秒をサポートしていますが、Angular(2+)はサポートしていません( GH問題 )。 dateパイプを適切にドロップし、このタスクにはカスタムパイプのみを使用してください。ただし、この例では日付を適切に処理できないようです。詳細を説明しないと、外部ライブラリを使用してフォーマットを実行することをお勧めしますあなたのパイプの内側にいると、それ以外の場合は少しの報酬で多くの労力を費やします。私の個人的な選択の武器は Moment.js 正しくインポートした後、次のように使用します:

moment(value).format('DD.MM.YYYY HH:mm:ss.SSS');

外部ライブラリをインポートせずにこれから汚い方法が必要な場合は、Angular日付パイプをそのまま(秒のみ))使用し、パイプして独自にミリ秒を追加できます。

5
borkovski

別の可能性は、角度パイプにとどまり、javascript-methodを介してミリ秒を抽出することです:

{{ Datetime | date:'dd.MM.yyyy HH:mm:ss' }}.{{ getMillies(Datetime) }}

----

public getMillies(input: Date): number
{
    return new Date(input).getMilliseconds();
}

Angular 5の場合、Mをサポートするために新しい日付パイプが進行中です

0
J.Starkl