Jakiś czas temu zbudowałem kalendarz z zbudowany na bibliotece moment.js. Problem w tym, jeśli mamy ustawioną strefę czasową UTC -8, przykładowo, to każdy dzień przesuwa się o jeden względem godziny 00:00 w UTC. Wtedy początkowy dzień miesiąca staje się ostatnim dniem poprzedniego z godziną 16.
Niby nic prostszego w tej sytuacji się zrobić nie da, tj. skonwertować startową datę lokalną na UTC. I tutaj zaczynają się dziać niezrozumiałe dla mnie cuda:}
let start = moment.utc(this.model.date).clone();
```
Po wykonaniu takiej komendy nasza początkowa data powinna zamienić się na aktualną w formacie UTC, jednak w miejsce jej prywatnych zmiennych pojawiają się `_i: "2019-01-01 00:00:00+00:00"` oraz `_d: Mon Dec 31 2018 17:00:00 GMT-0700 (czas górski standardowy)`. Znalazłem taki temat na forum: https://stackoverflow.com/questions/29114824/moment-js-convert-local-time-to-utc-time-does-work, gdzie jedna z osób napisała, że po samym skonwertowaniu czasu data jeszcze się nie zmienia, mimo że prywatna zmienna `_isUtc` jest ustawiona na `true`. Ta się nie ustawi, dopóki nie wywoła się na niej `format()`. Więc ktoś zaproponował takie o to rozwiązanie:
```javascript
var localDateString = '24/04/2019';
var localDateStringFormat = 'DD/MM/YYYY';
var utcMoment = moment.utc(moment(localDateString, localDateStringFormat ).utc().format('YYYY-MM-DD HH:mm:ssZ'))
```
które najpierw konwertuje datę do UTC, potem ją formatuje, następnie z powrotem konwertując na UTC, co wygląda kosmicznie, mając na uwadze, że biblioteka przecież ma ułatwiać pracę z datami:]. Mało tego jednak - nie działa. Ma ktoś pomysł, jak poprawnie to skonwertować, operując wcześniej na lokalnym czasie? Wierzę, że istnieje jakieś naprawdę proste rozwiązanie.