Я пишу приложение для Android, и мне нужно знать, открыт ли магазин в течение определенного периода времени или нет.Я уже использую код ниже:
try {
Date time1 = new SimpleDateFormat("HH:mm:ss").parse(getResources().getString(R.string.opening_time));
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(time1);
Date time2 = new SimpleDateFormat("HH:mm:ss").parse(getResources().getString(R.string.closing_time));
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(time2);
calendar2.add(Calendar.DATE, 1);
Date current = new SimpleDateFormat("HH:mm:ss").parse(getCurrentTime());
Calendar calendar3 = Calendar.getInstance();
calendar3.setTime(d);
calendar3.add(Calendar.DATE, 1);
Date x = current.getTime();
if (x.after(calendar1.getTime()) && x.before(calendar2.getTime())) {
isOpened = true;
}
} catch (ParseException e) {
e.printStackTrace();
} finally {
return isOpened;
}
Проблема с этим кодом заключается в том, что он не учитывает часовой пояс.
time1 и time2 - соответственно время открытия и закрытия, и они основаны на часовом поясе PST.прямо сейчас они определены следующим образом:
<string name="opening_time">06:00:00</string>
<string name="closing_time">18:00:00</string>
они основаны на 24-часовом формате и не указывают часовой пояс.поскольку время открытия всегда основывается на одном и том же часовом поясе, я могу настроить программно, если это необходимо.
Как мне заставить его работать правильно, чтобы он отвечал на истину или ложь, если магазин открыт и учитывает часовой пояс.Поскольку мой магазин открыт с 6 утра до 6 вечера по тихоокеанскому времени, если кто-то попытается войти в 8 вечера по восточному времени, это должно быть хорошо.
У меня минимальная поддержка API 19
Спасибо