Как удалить год (гггг) в дате (дд / мм / гггг) - PullRequest
0 голосов
/ 26 января 2019

у меня ниже даты,

24/04/2019

13/05/2019

12/04/2019

Я хочу удалить год и преобразовать эти даты в следующий формат,

24/04

13/05

12/04

Это не только для вывода. Я хочу выполнить сложение или подать заявку на цикл в эту дату.

Ответы [ 4 ]

0 голосов
/ 29 января 2019

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

String date="24/04/2019";

String [ ] ddyymm=date.split("/");

 String output=ddyymm[0]+"/"+ddmmyy[1];
0 голосов
/ 26 января 2019

Вы можете получить подстроку от индекса 0 до 4:

String input = "24/04/2019";
String output = input.substring(0, 5);
0 голосов
/ 26 января 2019

ТЛ; др

MonthDay                     // Represent a month & day-of-month, without a year.
.from(                       // Extract a `MonthDay` from a `LocalDate`, omitting the year but keeping the month and day-of-month.
    LocalDate                // Represent a date-only value, without time-of-day and without time zone.
    .parse(                  // Parse a string to get a `LocalDate`.
        "24/04/2019" ,       // FYI, better to use standard ISO 8601 formats rather than devising a custom format such as this.
        DateTimeFormatter.ofPattern( "dd/MM/uuuu" )  // Match the formatting pattern of your input strings.
    )                        // Returns a `LocalDate`. 
)                            // Returns a `MonthDay`.
.format(                     // Generate a `String` with text representing the value of this `MonthDay` object.
    DateTimeFormatter.ofPattern( "dd/MM" ) 
)                            // Returns a `String`.

См. Этот код в режиме реального времени на IdeOne.com .

24/04

LocalDate & MonthDay

Java поставляется с классами для этой работы:

Разобрать ваши входные строки, чтобы получить LocalDate объектов. Определите шаблон форматирования в соответствии с форматом ввода.

String input = "24/04/2019" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) ;

Анализировать.

LocalDate ld = LocalDate.parse( input , f ) ;

Генерация строки в стандартном формате ISO 8601 , ГГГГ-ММ-ДД. Я настоятельно рекомендую вам использовать эти форматы при обмене значениями даты и времени в виде текста, а не при разработке собственных пользовательских форматов.

Классы java.time по умолчанию используют эти стандартные форматы при разборе / генерации строк. Поэтому не нужно указывать шаблон форматирования.

String output = ld.toString() ; 

2019-04-24

Извлекайте только месяц и день, оставляя год.

MonthDay md = MonthDay.from( ld ) ;  // Extract the month & day-of-month, but omit the year.

Генерация строки в стандартном формате ISO 8601. Формат использует двойные дефисы впереди для обозначения пропущенного года.

String output = md.toString():

- 04-24

Вы можете также проанализировать это значение.

MonthDay md = MonthDay.parse( "--04-24" ) ;

Вы можете вернуться к LocalDate, указав год.

LocalDate ld = md.atYear( 2019 ) ;  // Generate a `LocalDate` by specifying a year to go with the month & day.

не только для вывода. Я хочу выполнить сложение или подать заявку на цикл в эту дату.

Изучите JavaDoc для обоих классов. Предлагается много удобных методов.

Вы можете сравнить с isBefore и isAfter.

Вы можете делать математику, складывая или вычитая промежутки времени. Вы можете настроить, например, перейти к определенному дню месяца. Обратите внимание, что классы java.time следуют шаблону неизменяемых объектов . Таким образом, вместо того, чтобы изменять («мутировать») оригинал, создается второй объект со значениями, основанными на оригинале.


О java.time

Фреймворк java.time встроен в Java 8 и более поздние версии. Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date, Calendar, & SimpleDateFormat.

Проект Joda-Time , теперь в режиме обслуживания , рекомендует выполнить переход на классы java.time .

Чтобы узнать больше, см. Учебное пособие по Oracle . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .

Вы можете обмениваться java.time объектами напрямую с вашей базой данных. Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в java.sql.* классах.

Где получить классы java.time?

Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти несколько полезных классов, таких как Interval, YearWeek, YearQuarter и more .

0 голосов
/ 26 января 2019

Используйте это:

String input = "24/04/2019";
String output = input.substring(0,input.lastIndexOf("/"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...