2017-06-28 9 views
1

私は一日の始まりを得るために瞬間を使用しようとしています。私は、次のと異なる結果を得る:momentjs startOfは既存の日付オブジェクトでは機能しません

moment().startOf('day'); //good 
moment(new Date()).startOf('day'); //this does not work! 

フィドル:

function doWork(dt) { 
    return moment(dt).startOf('day'); 
} 
https://jsfiddle.net/y1of77wx/

実用的なケースは、私は、引数として日付オブジェクトにとる関数でこれをやっているということです

私は解決策は簡単だと確信していますが、私は何かが欠けているだけです。

答えて

1

私はformat()を使用してモーメントオブジェクトの値を表示することをお勧めします。

Internal Propertiesガイド状態として:

モーメントオブジェクトは_付いされるいくつかの内部特性を有します。

最も一般的に表示される内部プロパティは、_dプロパティで、MomentがラップするJavaScript Dateを保持します。多くの場合、開発者はコンソール出力の値が_dであると混乱します。

...

.format()を使用し、モーメントの値をプリントアウトするには、.toString()または.toISOString()

ここでは、正しい結果を示すスニペット:

console.log(moment().startOf('day').format()); 
 
console.log(moment(new Date()).startOf('day').format());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

+2

それは面白いです、それは正しく動作しますが、表示が間違っています。私がUNIXのタイムスタンプを記録すると、私はそれが変わることを確かに見ることができます。 – jhilden

+0

@jhilden私はUNIXのタイムスタンプを記録しても(出力は['unix()'](http://momentjs.com/docs/#/displaying/unix-timestamp/))でも一貫しています。他に何か問題はありますか? _display_は間違っていますか? – VincenzoC