Date
w java oznacza liczbę milisekund od 1970 roku liczba ta sama nie ma specyficzną strefę czasową. Oznacza to, że jeśli utworzysz datę o numerze new Date()
, otrzymasz bieżące milisekundy od 1970 roku i jeśli wywołasz toString, wartość ta będzie reprezentowana w Twojej aktualnej strefie czasowej. Rzeczywisty czas reprezentowany przez tę liczbę jest zależny od strefy czasowej. Z tego powodu można ustawić klasy TimeZone
na Calendar
i Format.
Do wystąpienia kalendarz z konkretnym TimeZone można to zrobić:
public static Calendar getUtcCalendar() {
GregorianCalendar.getInstance(TimeZone.getTimeZone("UTC"));
}
Więc do konwertowania Date
do określonego czasu UTC Strefa czasowa:
Calendar calendar = getUtcCalendar();
calendar.setTime(date);
return calendar;
Czy możesz użyć interfejsu API Data/czas Java 8? –
@MickMnemonic Używam tylko Java8 –