Программа запрашивает сегодняшнюю дату и выдает дату следующего дня java

При необходимости мне нужно обновить дату до следующего дня, если у меня есть текущая дата.

Метод, который я использую для получения текущей даты

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

Konstantin18ko

Стоматолог

Текущая дата

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

  • Java

Как решить проблему с запуском Jakarta EE проекта?

  • 1 подписчик
  • 08 июн.
  • 69 просмотров

java

  • Java
  • +1 ещё

Порядок байт при расчете стрибог хеша?

  • 1 подписчик
  • 08 июн.
  • 65 просмотров

Источник: qna.habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru