Сравнение дат в Java - PullRequest
       42

Сравнение дат в Java

0 голосов
/ 30 апреля 2010

Я хотел бы сравнить дату с текущей датой. не могли бы вы сказать мне, как это сделать в Java.

Ответы [ 5 ]

2 голосов
/ 30 апреля 2010

Вы можете получить текущую дату с текущим языковым стандартом / часовым поясом, выполнив

Дата сейчас = новая Дата ();

Затем, учитывая другую дату, d, вы можете сделать:

if (d.equals(now))
or
if (d.after(now))
or
if (d.before(now))

и т.д.

Если указанная вами дата указана в виде строки, используйте

java.text.SimpleDateFormat.java для преобразования его в объект Date.

0 голосов
/ 30 апреля 2010

Под прикрытием Дата - это просто long количество миллисекунд с 1 января 1970 года. Длинное значение можно получить с помощью myDate.getTime(). Для сравнения дат вы можете просто сравнить их длинные значения таким образом. Но, как уже отмечали другие, у Date есть несколько хороших способов сделать это более понятным: equals(), before() и after().

Чтобы преобразовать строку в дату, используйте SimpleDateFormat. См. этот урок .

Недавно я начал использовать библиотеку Joda-Time , с которой гораздо легче работать и работать, чем с датами и календарями Java.

0 голосов
/ 30 апреля 2010
Date d1 = new Date();
Date d2 = new Date();
int results = d1.compareTo(d2);

d1 и d2 должны быть инициализированы с датами и могут сравниваться

CompareTo - это метод, который помогает вам найти разницу между датами.

0 голосов
/ 30 апреля 2010

Получите даты (как бы вы их ни получали, в приведенном ниже коде это новая дата ()), а затем используйте getTime () для получения времени Unix (смещение от 1 января 1970 года, 00:00:00 по Гринвичу) сделать сравнение

Date then = new Date();
...
Date now = new Date();

long thenInMilliseconds = then.getTime();
long nowInMilliseconds = now.getTime();

if(nowInMilliseconds [<, <=. ==, >=, >] thenInMilliseconds)

Вы также можете использовать метод compareTo или, как указано в другом ответе, методы до и после .

РЕДАКТИРОВАТЬ на основе комментария ниже:

Для анализа даты из строки вы можете использовать класс SimpleDateFormat (есть и другие способы).

Например, вот код, который я использую для этого:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
Date date = dateFormat.parse("2010-02-12T18:03:15Z");
0 голосов
/ 30 апреля 2010

С java.util.Date это можно сделать с помощью:

Date today = new Date();
today.equals(otherDate) / today.after(otherDate) / today.before(otherDate)

Если вы хотите более точный расчет, я бы порекомендовал вам не использовать Date, так как многие его методы устарели. java.util.Calendar лучше, с этим к текущей дате обращаются как это:

Calendar cal = Calendar.getInstance();

Если вы сравниваете Calendar с Date, сравнение можно сделать так:

Date date //your date
Calendar.getInstance().equals(date)/before(date)/after(date);

Но вы также можете получить точное количество миллисекунд:

long diff = Calendar.getTimeInMillis() - date.getTime();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...