Работа с датой и временем США и инкрементом - PullRequest
0 голосов
/ 05 мая 2020

Я хочу создать функцию, которая принимает строку, представляющую дату в формате «ММ / дд / гггг ЧЧ: мм AM или PM», и я хочу увеличить количество дней и времени X раз, прежде чем оно будет возвращено в формат yyyy-MM-dd HH: mm AM или PM ". На данный момент единственный известный мне способ - это преобразовать его в европейскую дату и время, работать с ним, используя LocalDateTime или Calendar, а затем преобразовать его снова, но это кажется неэффективным преобразование туда и обратно. Существуют ли какие-либо объекты даты и времени, которые могут работать с американским временем и делать такие вещи, как приращения?

Ответы [ 3 ]

1 голос
/ 05 мая 2020

DateTimeFormatter + LocalDateTime

import java.time.temporal.ChronoUnit;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

DateTimeFormatter formater = DateTimeFormatter.ofPattern("MM/dd/yyyy h:mm:ss a", Locale.ENGLISH);
LocalDateTime dateTime = LocalDateTime.parse("05/06/2020 3:45:00 PM", formater);
dateTime.plus(5, ChronoUnit.DAYS)
1 голос
/ 05 мая 2020

попробуйте DateTimeFormatter.ofPattern(...) проанализировать вашу строку на LocalDateTime. Также есть варианты разбора AM / PM

Symbol  Meaning                     Presentation      Examples
------  -------                     ------------      -------
a       am-pm-of-day                text              PM

https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ISO

0 голосов
/ 05 мая 2020

Поскольку вы в первую очередь принимаете дату как строку, вам нужно будет преобразовать ее в LocalDateTime, чтобы управлять ею. При этом вы можете сделать что-то вроде этого:

    DateTimeFormatter formatter = new DateTimeFormatter("MM/dd/yyyy hh:mm a");
    LocalDateTime date = LocalDateTime.parse([yourString], formatter);

Отсюда вы будете выполнять манипуляции с датой / временем, используя методы плюс и минус из этой документации: https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html Затем как только вы это сделаете, создайте SimpleDateFormat следующим образом:

SimpleDateFormat sdf = new SimpleDateFormatter.ofPattern(yyyy-MM-dd hh:mm a)

, а затем распечатайте свою строку следующим образом:

sdf.format(date).toString(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...