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
Методы уровня программирования разработаны для получения даты и времени с вашей системы. Вы не можете изменять их, чтобы получить даты, за исключением указанной в системе.
Для вашего дополнительного требования, если вы действительно хотите его использовать, вам потребуется синхронизация между вашей клиентской машиной и сервером.