Java - Как получить текущий год?

Я хочу знать текущую дату и время.

Код

Calendar.getInstance();

представляет дату и время системы, на которой запущена программа, и системная дата может быть неправильной.

Итак, есть ли способ, с помощью которого я могу получить правильную текущую дату и время независимо от даты и времени системы, в которой работает программа?

Ответы

Ответ 1

Если вы находитесь в Интернете, вы можете попросить известного и надежного источника времени. Если человек, запускающий вашу программу, хочет помешать вашей программе сделать это (например, если вы предоставили им ограниченную по времени лицензию, и они не хотят платить больше времени), они могут обманывать или блокировать это соединение.

В одном проекте, в котором я был включен, мы поставили надежный, надежный источник времени в аппаратном обеспечении, которое нельзя было подделать. Он был разработан для шифрования и лицензирования и имел библиотеку Java для доступа к ней. К сожалению, я не могу запомнить имя устройства.

Таким образом, ответ может быть да, возможно, нет.

Ответ 2

В версиях Java до 1.1 стандартно использовать класс Date:

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

Однако в более новых версиях Java большая часть класса Date устарела (в частности, метод getYear). В настоящее время более стандартным является использование класса Calendar:

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

Ответ 3

Я полностью не понимаю ваш вопрос, но могу ответить на ваш титул:

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

Ответ 4

Есть ли у вас системный доступ в Интернет? Если это так, вы можете использовать синхронизацию с точными службами времени (например: http://tldp.org/HOWTO/TimePrecision-HOWTO/ntp.html) и предоставить, что вы хотите.

Ответ 5

Методы уровня программирования разработаны для получения даты и времени с вашей системы. Вы не можете изменять их, чтобы получить даты, за исключением указанной в системе.

Для вашего дополнительного требования, если вы действительно хотите его использовать, вам потребуется синхронизация между вашей клиентской машиной и сервером.