При необходимости мне нужно обновить дату до следующего дня, если у меня есть текущая дата.
Метод, который я использую для получения текущей даты
SimpleDateFormat sdf = new SimpleDateFormat(«yyyy-MM-dd’T’HH:mm:ssZ»); sdf.setTimeZone(TimeZone.getTimeZone(«GMT-4:00»)); return sdf.format(new Date());
Теперь я хочу получить следующую дату, используя это в качестве ввода. Я пробовал это
System.out.println(Integer.parseInt(getOrderDate())+1);
Я получаю эту ошибку
java.lang.NumberFormatException: For input string: «2020-01-06T09:46:29-0400
Может кто-нибудь помочь и дайте мне знать.
user14805887 6 Янв 2021 в 16:52
3 ответа
Лучший ответ
Вам нужно добавить день, в который вы устанавливаете дату:
return sdf.format(new Date());
Для этого у вас может быть такой метод:
public String getOrderDate(Integer daysToAdd) < // Date computation Calendar c = Calendar.getInstance(); c.setTime(new Date()); if(daysToAdd!=null) < c.add(Calendar.DATE, daysToAdd); >// Date formatting SimpleDateFormat sdf = new SimpleDateFormat(«yyyy-MM-dd’T’HH:mm:ssZ»); sdf.setTimeZone(TimeZone.getTimeZone(«GMT-4:00»)); return sdf.format(c.getTime()); >
MTranchant 6 Янв 2021 в 14:04
Во-первых, если вы работаете с Java 8 или выше, я настоятельно рекомендую не использовать устаревший класс java.util.Date и перейти на пакет java.time . Вы можете использовать класс ZonedDateTime или любого из его «братьев», например LocalDateTime или других. Также с этим пакетом вы можете использовать класс DateTimeFormatter , чтобы отформатировать дату в String. Также там легко добавлять или вычитать количество любых единиц времени (например, дней, минут, месяцев и т.д.) такими методами, как plusDays ().
Урок 24. Работа с датой и временем. Java Date Time API
Однако в вашем случае вам нужно изменить метод getOrderDate, чтобы получить дату в качестве параметра. Вы передаете дату своему методу и просто конвертируете ее в String. Что касается добавления дня к дате, вы можете сделать это следующим образом:
private static final Long ONE_DAY_IN_MILLISECONDS = 24L * 60L * 60L * 1000L Date date = new Date(); // current date date.setTime(date.getTime() + ONE_DAY_IN_MILLISECONDS) // incrementing date by one day
Michael Gantman 6 Янв 2021 в 14:06
Во-первых, не записывайте дату заказа в строку. Поскольку вам нужно время заказа, сохраните его в Instant . Instant — это момент времени, не зависящий от часового пояса или смещения UTC (некоторые говорят, что это время в UTC).
Вы всегда можете отформатировать строку в часовом поясе пользователя позже, когда она вам понадобится для презентации. Это то же самое, что числа и логические значения, вы не храните их в строках (я надеюсь).
Во-вторых, используйте java.time для работы с датой и временем. Упомянутый мною класс Instant принадлежит java.time.
В-третьих, не делайте вид, что GMT-4: 00 — это часовой пояс. Это смещение по Гринвичу. Ваши пользователи могут использовать другое смещение по Гринвичу в ближайшее время, когда начинается или заканчивается летнее время (DST) или политики просто передумают, какому смещению по Гринвичу следует относиться. Поэтому используйте правильный идентификатор часового пояса, например America / Barbados. Формат: регион / город .
Урок по Java 48: Даты, календари и время.
Итак, ваш метод становится простым:
public Instant getOrderDate()
Чтобы добавить день — чтобы получить то же время завтра — вам нужно сначала выбрать часовой пояс, поскольку в некоторых часовых поясах день может длиться, например, 23 или 25 часов иногда. Я полагаю, вы хотите принять это во внимание, а не просто слепо прибавлять 24 часа. Так например:
ZoneId zone = ZoneId.of(«Africa/Windhoek»); ZonedDateTime orderDateTime = getOrderDate().atZone(zone); ZonedDateTime tomorrow = orderDateTime.plusDays(1); String tomorrowInIso8601Format = tomorrow.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME); System.out.println(tomorrowInIso8601Format);
Вывод, когда я бегал только сейчас:
Я использую тот факт, что форматер встроен.
Источник: question-it.com
Как получить следующую дату, передав текущую дату в Java
Как получить следующую дату (2014/03/21) с учетом текущей даты (2014/03/20) в Java?
Код:
public static String getNextDate(String curDate) < String nextDate=»»; try < //here logic to get nextDate >catch (Exception e) < return nextDate; >return nextDate; >
java baba 20 март 2014, в 12:25
Поделиться
Поделиться:
4 ответа
Лучший ответ
Используйте SimpleDateFormat для получения объекта Date из строкового представления, затем используйте Calendar для арифметики, а затем SimpleDateformat, чтобы преобразовать объект Date обратно в строковое представление. (И обрабатывать Исключения, которых я не делал)
public static String getNextDate(String curDate) < final SimpleDateFormat format = new SimpleDateFormat(«yyyy/MM/dd»); final Date date = format.parse(curDate); final Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_YEAR, 1); return format.format(calendar.getTime()); >
SCI 20 март 2014, в 09:23
Поделиться
Но обязательно проверьте результат или включите проверку ошибок в функции, чтобы убедиться, что строка curDate действительна
PMunch 20 март 2014, в 11:16
SCI 20 март 2014, в 11:18
Источник: overcoder.net
Как получить текущую дату и дату следующего дня?
Необходимо получить текущую дату в формате «10 февраля». И как реализовать получение следующего дня и предыдущего?
- Вопрос задан более трёх лет назад
- 3958 просмотров
Решения вопроса 0
Ответы на вопрос 2
Стоматолог
Текущая дата
import java.util.Calendar; int Date; int Month; int Year; public static void main(String args[])
Как добавить день
String dt = «2008-01-01»; // Start date SimpleDateFormat sdf = new SimpleDateFormat(«yyyy-MM-dd»); Calendar c = Calendar.getInstance(); c.setTime(sdf.parse(dt)); c.add(Calendar.DATE, 1); // number of days to add dt = sdf.format(c.getTime()); // dt is now the new date
Ответ написан более трёх лет назад
Нравится 3 Комментировать
Или так можно получить текущую дату в нужном формате:
Date currentDate = new Date(); // Текущая дата SimpleDateFormat sdf = new SimpleDateFormat(«dd MMMMMMMM»); // Задаем формат даты String formattedDate = sdf.format(currentDate); // и форматируем
Ответ написан более трёх лет назад
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ
- Java
Как решить проблему с запуском Jakarta EE проекта?
- 1 подписчик
- 08 июн.
- 69 просмотров
- Java
- +1 ещё
Порядок байт при расчете стрибог хеша?
- 1 подписчик
- 08 июн.
- 65 просмотров
Источник: qna.habr.com