ищем искробезопасный (java) код для строки даты с пробелами между ними с конкретными условиями - PullRequest
0 голосов
/ 21 февраля 2019

нужны предложения по нижеуказанным требованиям.Каждый ответ очень помогает, заранее спасибо ....

У меня есть дата типа String с отметкой времени, например: Jan 8 2019 4:44 AM

Требуется, чтобы дата была одной цифрой.быть 1 пробелом и цифрой (например, 8), и если дата - 2 цифры, то есть даты от 10 до 31, я хочу, чтобы дата была без пробелов (например, 10), а также для часа в метке времени.

Подводя итог: если дата от 1 до 9 и часовая метка от 1 до 9, ищите нижнюю строку

Jan  8 2019  4:44 AM

, если дата от 10 до 31, а часовая метка от 10 до 12 ищет нижнюю строку

Jan 18 2019 12:44 AM

сейчас я создаю дату следующим образом:

val sdf = new SimpleDateFormat("MMM  d yyyy  h:mm a")

, но вышеприведенный формат удовлетворяет только одному условию, которое датируется от 1 до 9.

мое приложение - искра со Scala, поэтому я ищу какой-нибудь искры Scala-код или Java.

Я ценю вашу помощь ...

Спасибо ..

1 Ответ

0 голосов
/ 21 февраля 2019

java.time

Используйте p в качестве модификатора пэда в строке шаблона формата.В синтаксисе Java (извините):

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
            "MMM ppd ppppu pph:mm a", Locale.ENGLISH);
    System.out.println(LocalDateTime.of(2019, Month.JANUARY, 8, 4, 44)
            .format(formatter));
    System.out.println(LocalDateTime.of(2019, Month.JANUARY, 18, 0, 44)
            .format(formatter));
Jan  8 2019  4:44 AM
Jan 18 2019 12:44 AM

И сделайте себе одолжение: забудьте все о классе SimpleDateFormat.Это общеизвестно хлопотно и, к счастью, давно устарело.Используйте java.time, современный Java-интерфейс даты и времени.

Ссылка: Учебное пособие по Oracle: Дата и время , объясняющее, как использовать java.time.

Чтобы процитировать документацию класса DateTimeFormatter:

Модификатор отступа: Изменяет шаблон, который следует непосредственно после заполнения пробелами.Ширина площадки определяется количеством букв шаблона.Это то же самое, что и вызов DateTimeFormatterBuilder.padNext(int).

Например, 'ppH' выводит часовой пояс с левой стороны с пробелами на ширину 2.

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