2010-05-23 12 views
17

Chcę poznać aktualną datę i godzinę.Java - Jak uzyskać aktualną datę niezależną od daty systemowej?

Kod

Calendar.getInstance(); 

reprezentuje datę i godzinę w systemie, w którym program jest uruchomiony i data systemowa może się mylić.

Czy istnieje sposób uzyskania prawidłowej bieżącej daty i godziny, niezależnie od daty i czasu systemu, w którym uruchomiony jest program?

+2

Data jest względna ... Nie ma czegoś takiego jak "poprawna bieżąca data", chyba że odnosi się do określonej strefy czasowej. –

+0

ok .. Jak mogę uzyskać prawidłową datę i godzinę określonej strefy czasowej? –

+0

Musisz zacząć od daty i godziny bieżącego systemu - czy to w porządku? – Mark

Odpowiedz

4

Jeśli korzystasz z internetu, możesz poprosić o znane i zaufane źródło czasu. Jeśli prowadzący program chce uniemożliwić działanie tego programu (np. Jeśli dałeś im licencję czasową i nie chcą płacić za więcej czasu), mogą podszyć lub zablokować to połączenie.

Przy jednym projekcie, w którym byłem, umieściliśmy bezpieczne, zaufane źródło czasu w sprzęcie, którego nie można zmienić. Został zaprojektowany do szyfrowania i licencjonowania i miał bibliotekę Java, aby uzyskać do niego dostęp. Niestety, nie pamiętam nazwy urządzenia.

Odpowiedź brzmi: tak, może nie.

0

Metody na poziomie programowania zostały opracowane, aby uzyskać datę i godzinę z samego systemu. Nie można ich modyfikować w celu uzyskania dat z wyjątkiem określonego systemu.

Aby spełnić dodatkowe wymagania, jeśli naprawdę chcesz je mieć, wymagana jest synchronizacja między komputerem klienta a serwerem.

7

nie całkowicie rozumiem pytanie, ale mogę odpowiedzieć na tytuł:

GregorianCalendar gc = new GregorianCalendar(System.getCurrentTimeMillis()); 
int year = gc.get(Calendar.YEAR); 
39

W wersjach przed Java 1.1 to była norma użyć klasy Date:

Date now = new Date();  // Gets the current date and time 
int year = now.getYear(); // Returns the # of years since 1900 

jednak W nowszych wersjach Javy znaczna część klasy Date została wycofana (w szczególności metoda getYear). Jest teraz bardziej standardowe użyć klasy Calendar:

Calendar now = Calendar.getInstance(); // Gets the current date and time 
int year = now.get(Calendar.YEAR);  // The current year 
+4

Wow, 29 przegranych i nie odpowiada na pytanie, które konkretnie pytało, jak uzyskać prawdziwą datę, kiedy zegar systemowy jest nieprawidłowy. –

+0

@Paul Tomblin Oryginalny tytuł tego pytania brzmiał "Java - jak zdobyć obecny rok?" który nie pasuje do faktycznego pytania. Zmodyfikował to. – ltlBeBoy

+0

@ltlBeBoy Sądzę, że to zbyt wiele, aby oczekiwać od respondentów pytań i przebojów, aby przeczytać więcej niż tytuł. –

0

Oto niektóre kodu, aby pobrać datę w formacie HTTP (zwykle czasowej UTC) z serwera WWW do wyboru.

Oczywiście, jeśli nie masz kontroli nad fizycznym sprzętem i systemem operacyjnym, nic nie może zagwarantować, że będziesz w stanie rozmawiać z rzeczywistym serwerem sieciowym, o który prosisz ... ale tak czy inaczej.

Powiązane problemy