Класс java.util.Date
- это контейнер, который содержит количество миллисекунд с 1 января 1970 года, 00:00:00 UTC. Обратите внимание, что класс Date
ничего не знает о часовых поясах. Используйте класс Calendar
, если вам нужно работать с часовыми поясами. ( edit 19-Jan-2017: если вы используете Java 8, используйте новый API даты и времени в пакете java.time
).
Класс Date
не очень подходит для хранения номера часа (например, 13:00 или 18:00) без даты. Он просто не предназначен для этой цели, поэтому, если вы попытаетесь использовать его таким образом, как вам кажется, вы столкнетесь с рядом проблем, и ваше решение не будет элегантным.
Если вы забудете использовать класс Date
для хранения рабочего времени и просто используете целые числа, это будет намного проще:
Date userDate = ...;
TimeZone userTimeZone = ...;
int companyWorkStartHour = 13;
int companyWorkEndHour = 18;
Calendar cal = Calendar.getInstance();
cal.setTime(userDate);
cal.setTimeZone(userTimeZone);
int hour = cal.get(Calendar.HOUR_OF_DAY);
boolean withinCompanyHours = (hour >= companyWorkStartHour && hour < companyWorkEndHour);
Если вы также хотите принять во внимание минуты (а не только часы), вы можете сделать что-то вроде этого:
int companyWorkStart = 1300;
int companyWorkEnd = 1830;
int time = cal.get(Calendar.HOUR_OF_DAY) * 100 + cal.get(Calendar.MINUTE);
boolean withinCompanyHours = (time >= companyWorkStart && time < companyWorkEnd);