podstawie documentation (i krótkim testowania), moment.js tworzy obwoluty wokół aktualnych obiektów. Oświadczenie:
var now = moment();
tworzy „moment” obiekt, który w jego serce ma nowy obiekt Date stworzony jakby new Date()
, więc godziny, minuty i sekundy zostanie ustawiona na chwili obecnej.
Oświadczenie:
var releaseDate = moment("2012-09-25");
tworzy chwilę obiekt, który w swoim sercu ma nowy obiekt Date stworzony jakby new Date(2012, 8, 25)
gdzie godziny, minuty i sekundy wszystko będzie ustawiony na zero dla lokalnej strefy czasowej .
moment.diff
zwraca wartość na podstawie tej zaokrąglone różnicę w ms między dwoma datami. Aby zobaczyć pełną wartość, przechodzą true
jako trzeci parametr:
now.diff(releaseDate, 'days', true)
------------------------------^
Więc to zależy od pory dnia, kiedy prowadzony jest kod i lokalnej strefy czasowej czy now.diff(releaseDate, 'days')
wynosi zero lub jeden, nawet gdy działają na ta sama lokalna data.
Jeśli chcesz porównać tylko daty, a następnie użyć:
var now = moment().startOf('day');
który ustawi czas do 00:00:00 w lokalnej strefie czasowej.
mam 1.7.0, i przetestowany kod i mam 'Diff: 0' - są na pewno nic się nie zmieniło w swoich moment.js? – rationalboss
Myślę, że ma to coś wspólnego z strefami czasowymi lub utc/local. Jeśli loguję '.hours()' z 'releaseDate' i' now' to daje to dla mnie inne wyniki. Jeśli używam 'var now = moment(). Sod()' [(docs)] (http://momentjs.com/docs/#/manipulating/sod/) to obecnie działa zgodnie z oczekiwaniami, ale nie jestem pewien jak bardzo ufam temu. – manafire