2017-10-31 9 views
0

私は関数に渡される瞬間値を持っており、瞬間をYYYY-MM-DD HH:mm(SS-ISO 8601)という形式の文字列にフォーマットしようとしています。日付は正確にフォーマットされていますが、時刻の値は省略されています。フォーマットモーメントから文字列へ

コード:the documentation 1として

timeTransformer(value: moment.Moment) { 
    return value == null ? null : value.format('YYYY-MM-DD HH:mm'); //Time is 00:00 even though I can see that moment has values 15:37:19 
} 

Can somebody explain this to me?

+0

「内部プロパティ」(http://momentjs.com/guides/#/lib-concepts/internal-properties/)は、 '_i'や' _d'のように使用しないでください。 – VincenzoC

+0

あなたはどういう意味ですか?私は 'value.format'を使用します。ここで' value'はモーメント値です。 _iと_dの理由は、瞬間に時間プロパティが設定されていることを示したかったからです。イメージはChromeコンソールの[ウォッチ]ウィンドウからのものです。 – Marcus

+2

私は '_'内部プロパティの値を見ないようにしたいと思っていました。解析して瞬間オブジェクトの価値を示すことで何かが間違っていると思われる場合は、関連するコードを共有してください。 'value'はどこから来たのですか? – VincenzoC

答えて

1

:このよう

_dの値と_付い他の特性は、任意の目的のために使用すべきではありません。

これまでに何が起こっているのか説明できます。あなたの場合、_i_fの両方が設定されていることがわかります。 _iは、渡された初期値を保存するために使用されているようです。 _fは入力を解析するときに書いた書式を保存するように見えます。ここを参照してください:

var m = moment('2017/10/04 12:34:56', 'YYYY/MM/DD'); 
 
console.log(m._i); 
 
console.log(m._f); 
 
console.log(m.format('YYYY-MM-DD HH:mm'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.min.js"></script>

_iプロパティは、同じように設定されますが、.format('YYYY-MM-DD HH:mm')をロギングすることはあなたが見る同じ00:00示しています。これは、私がYYYY/MM/DDと解釈する瞬間を話したからです - YYYY-MM-DDを使用しました。

時間を稼働させるには、モーメントオブジェクトを作成しているコードを変更してください。

+1

彼は_iと_f変数を使用していないので、私は彼がDateに最初に時間があることを説明するためにコンソールにそれらを示したと思います。 –

+0

@LucaDeNardi私は知っています。 _私はそれらを使用していません。私は、瞬間が内部で何をしているのかを実証するためにそれらを記録しています。私は、私の答えに書かれた警告を書いて、それを使わないようにしていましたが、その中にある値は何が起こっているのかを指摘するために使用することができます。 –

+0

私が使用していない内部変数 '_i'の時刻は、DateTime変数(.NET)が最初に作成されたサーバー側に設定された正しい時刻を保持しており、それが私が示した目的です値が正確に設定されたことを私に教えてください。オブジェクトはプログラムで「作成」されていませんが、データテーブルにバインドされたオブジェクトのObservableリストです。 – Marcus