Как в Java разделить значение на три части и поменять местами первую и третью части?

Как можно поместить соответствующие значения дня и года в разные места массива после их разделения из строки даты dd-mm-yyyy? Требуется поменять значения дня и года местами в массиве..getResourceString("startDate")

Вот мой текущий код:

```java
String format = getResourceString("startDate");
if(getResourceString("status").equals("SUCCESS")){
    String[] parts = format.split("-");
    String day = parts[0];
    String month = parts[1];
    String year = parts[2];

    String[] correctDate = {day, month, year};
    String temp = correctDate[0];
    correctDate[0] = correctDate[2];
    correctDate[2] = temp;

    System.out.println(Arrays.toString(correctDate));
} 
else {
    return getResourceString("jobWorkPlace");
}
```

Ошибка, которую я получаю, звучит так: 

```java.lang.Exception: FN_START_DATE[source error] bad array access
```
  • 5 марта 2024 г. 10:29
Ответы на вопрос 2
Проблема заключается в том, что вы пытаетесь изменить значения дня и года в массиве `correctDate`, но вместо этого вы должны поменять местами значения `day` и `year` в массиве `parts`. 

Вот исправленный код:

```java
String format = getResourceString("startDate");
if(getResourceString("status").equals("SUCCESS")){
    String[] parts = format.split("-");
    
    // Поменять местами значения дня и года
    String temp = parts[0];
    parts[0] = parts[2];
    parts[2] = temp;

    System.out.println(Arrays.toString(parts));
} 
else {
    return getResourceString("jobWorkPlace");
}
```

Теперь в массиве `parts` значения дня и года поменялись местами.
Можно так: 
...
        // Test to change datetime items in text form

        SimpleDateFormat sdfIn  = new SimpleDateFormat( "dd.mm.yyyy" );
        SimpleDateFormat sdfOut = new SimpleDateFormat( "yyyy.mm.d" );

        String strIn = "25.11.2023";
        Date dt = sdfIn.parse( strIn );
        String strOut = sdfOut.format( dt );

        System.out.printf( "+++ Convert date format: '%s' -> '%s'%n", strIn, strOut );
...

Результат: +++ Convert date format: '25.11.2023' -> '2023.11.25'
Похожие вопросы