Java DateTimeFormatter начало недели с понедельника - PullRequest
0 голосов
/ 08 марта 2020

Я пытаюсь отформатировать текущую дату с помощью DateTimeFormatter, и я почти получаю то, что мне нужно, но моя проблема в том, что дни недели перечисляются с воскресенья, а не с понедельника. Так, например, если во вторник я выполню код ниже

import java.time.LocalDateTime
import java.time.format.DateTimeFormatter;
final LocalDateTime currentTime = LocalDateTime.now()
def DATE = currentTime.format(DateTimeFormatter.ofPattern("YYYY'cw'w'd'e"))

, я ожидаю вывод: 2020cw10d2, но фактический вывод, который я получаю, равен 2020cw10d3. В документации DateTimeFormatter есть шаблон localized day of week, который является опцией e/c, однако в моем случае это ничего не меняет. Я нахожусь в Европе (GMT + 1), и недели с понедельника пересчитываются. Серверы, с которыми я работаю, также находятся в одном и том же часовом поясе, но, тем не менее, я получаю одинаковый вывод на своем рабочем столе и своих серверах. Что я делаю неправильно? Есть ли способ перечислить недели с понедельника в DateTimeFormatter?

1 Ответ

2 голосов
/ 08 марта 2020

Вы можете присвоить DateTimeFormatter языковой стандарт с помощью withLocale:

currentTime.format(DateTimeFormatter.ofPattern("YYYY'cw'w'd'e").withLocale(Locale.UK));

или передать его в качестве второго параметра в ofPattern:

currentTime.format (DateTimeFormatter. ofPattern ("YYYY'cw'w'd'e", Locale.UK));

Тем не менее, по умолчанию форматер должен использовать вашу собственную локаль, поэтому странно, что он делает то, что вы не делаете не ожидайте.

Локаль UK подсчитывает дни недели, начиная с понедельника, поэтому вы можете использовать ее вместо этого, если вы хотите отформатировать дни недели только таким образом c.

...