2

isotime にフォーマットされた日付オブジェクトがあります。|日付フィルターを使用して、テンプレートでこれを適切にフォーマットしていますが、時刻が誤って変更されています。

このコード...

    <td>[[ user.last_online | date:'dd MMM yyyy - hh:mm a' ]]</td>
    <td>[[ user.last_online ]]</td>

これで結果...

ここに画像の説明を入力

1時間の違いはタイムゾーンが原因であることがわかりました。これは私が期待していることです。ただし、議事録は正しくありません。

最初の行では、フィルターが適用されると 13 分が追加されます。2 行目では、5 分が追加されます。

これら 2 つの値は間違っているだけでなく、矛盾しています。

4

3 に答える 3

2

の値が間違っているか、形式が間違っていると思いuser.last_onlineます。ISO8601を確認すると、正しいタイムスタンプの形式が次のようになっていることがわかります。

yyyy-MM-ddTHH:mm:ss.SSSZ

My plunker

于 2013-08-09T14:18:20.280 に答える
1

日付は正しくフォーマットされています。ISO8601 では、実際には特定の小数点以下の桁数は必要ありません。小数点以下 0 桁から 7 桁まで、またはそれ以上になる可能性があります。ISO8601 仕様の実際のコピーを見ると、セクション 4.2.2.4 には次のように書かれています。

... 小数点以下の桁数を必要なだけ ...

コンストラクターに直接渡されたときにこれが問題になる古いブラウザーがいくつかありますが、new Date()私の知る限り、それらはバグと見なされ、修正されました。

バージョン 1.1.5 で修正された AngularJS のバグが発生しています。次のように、変更ログで参照されていることがわかります。

日付フィルター: 3 秒未満の数字を含む日付を正しくフォーマットする ( 4f2e3606 )

于 2013-08-09T15:46:46.963 に答える