Cześć.
Powoli piszę moją webaplikację, która pozwala stworzyć sezon, a w nim konkursy na najlepsze (pod jakimś względem) zdjęcie. I oczywiście dany sezon ma swój czas rozpoczęcia i czas zakończenia (tak samo dany konkurs w sezonie). Problem pojawił mi się z synchronizacją podczas zapisywania czasu do bazy danych i pobierania go, a raczej chyba nie do końca rozumiem jak to działa.
Załóżmy jest godzina 15:00 u mnie na komputerze.
Taki insert wykonany bezpośrednio z pliku .sql:
INSERT INTO seasons VALUES (1, now(), 'sezon 2016 wiosna', '2016-08-05 18:00:00', 'WIOSNA', now(), 2);
wrzuci mi do bazy nowy sezon gdzie metoda now()
rzeczywiście da godzinę 15:00.
Teraz z poziomu angulara rzucam GET request'a o sezony. On wyciąga milisekundy, które według czasu GMT wskazują rzeczywiście na 15:00, jednak mój time zone dodaje mi 2H (nie wiem czemu nie 1H, ale już pomijam to) i wyskakuje godzina 17:00 (używam momentjs który z milisekund od 1970 ustawia domyślnie odpowiednią datę i godzinę).
Teraz odwrotna sytuacja:
z poziomu klienta sam tworzę sezon i ustawiam na formularzu datę rozpoczęcia na 15:00 po czym rzucam POST'a zapisując sezon (metoda restowa zapisuje sezon używając metody 'save' interfejsu rozszerzającego odpowiednie CrudRepository, które dostarcza Spring Boot). W bazie pojawia mi się krotką z następującą datą: 2016-06-04 13:00:00
. Gdy chcę wypisać tę datę, którą reprezentuje klasa DateTime (z JodaTime):
System.out.println("start date -> " + startDate);
daje:
start date -> 2016-06-01T15:00:00.000+02:00
Przy okazji metoda DateTime.now()
wypisuje 2016-05-29T15:00:00.000+02:00
(zakładając że na komputerze jest godzina 15:00).
I tak nie bardzo mam pomysł jak to skonfigurować, dlatego proszę o pomoc i częściowe wyjaśnienie mechaniki tego.