V rámci java.time.format.DateTimeFormatter
je možné použít pro formátování roku malá y a velká Y. Špatně zvolené y může znamenat špatně dohledatelnou chybu. Malé y znamená year-of-era
, což vytvoří očekávaný výstup, kdy 31.12. bude vždy jako poslední den v daném roce. Velké Y znamená week-based-year
, což v případě týdnu, který spadá do více roků, vytvoří neočekávaný výstup. Pokud Silvestr (či pár předchozích dnů) připadnou do týdne, který nemá 31.12. v sobotu, budou dny poslední dny roku z přelomového týdne patřit do následujího roku. Příklad bude nejlepší. Takto to funguje na Linuxu, ale např. na Window byl výstup s velkým Y pro rok 2021 stejný jako pro malé y.
val formatY = DateTimeFormatter.ofPattern("ccc dd.MM.YYYY") val formaty = DateTimeFormatter.ofPattern("ccc dd.MM.yyyy") Formatting 2021-12-31 ccc dd.MM.YYYY format Fri 31.12.2022 ccc dd.MM.yyyy format Fri 31.12.2021 Formatting 2020-12-31 ccc dd.MM.YYYY format Thu 31.12.2021 ccc dd.MM.yyyy format Thu 31.12.2020 Formatting 2019-12-31 ccc dd.MM.YYYY format Tue 31.12.2020 ccc dd.MM.yyyy format Tue 31.12.2019 Formatting 2018-12-31 ccc dd.MM.YYYY format Mon 31.12.2019 ccc dd.MM.yyyy format Mon 31.12.2018 Formatting 2017-12-31 ccc dd.MM.YYYY format Sun 31.12.2018 ccc dd.MM.yyyy format Sun 31.12.2017 Formatting 2016-12-31 ccc dd.MM.YYYY format Sat 31.12.2016 ccc dd.MM.yyyy format Sat 31.12.2016 Formatting 2015-12-31 ccc dd.MM.YYYY format Thu 31.12.2016 ccc dd.MM.yyyy format Thu 31.12.2015 Formatting 2014-12-31 ccc dd.MM.YYYY format Wed 31.12.2015 ccc dd.MM.yyyy format Wed 31.12.2014 Formatting 2013-12-31 ccc dd.MM.YYYY format Tue 31.12.2014 ccc dd.MM.yyyy format Tue 31.12.2013 Formatting 2012-12-31 ccc dd.MM.YYYY format Mon 31.12.2013 ccc dd.MM.yyyy format Mon 31.12.2012 Formatting 2011-12-31 ccc dd.MM.YYYY format Sat 31.12.2011 ccc dd.MM.yyyy format Sat 31.12.2011 Formatting 2010-12-31 ccc dd.MM.YYYY format Fri 31.12.2011 ccc dd.MM.yyyy format Fri 31.12.2010