Date formatting assumptions
Capitalization of day names and months
Developers might assume that the names for day names and months are always capitalized, like "Thursday" and "February". This is the case for languages like English and German.
But this capitalization rule is not universal. Notable languages include French, Italian, and Spanish. For example, in French:
- "Tuesday" is "mardi"
- "March" is "mars"
A convenient list of languages that do and do not capitalize day names and months can be found on Wikimedia's Meta-wiki "Capitalization of Wiktionary pages".
Edge cases where the name is capitalized
Even in languages where the names are uncapitalized there are situations where the word is capitalized. Primarily:
- At the beginning of the sentence
- When displayed on its own (A title, column header, or an option in a select field)
Proof of this can be found by looking at the front pages of printed newspapers and calendars.
Newspapers: Depicted are a few examples where the day of the week is capitalized across French, Dutch, Spanish, Italian, Danish, Swedish, and Norwegian. (Apologies for the low quality imagery, but these are the highest resolution pictures I could get of these publications)
That said, capitalizing the first letter in standalone dates is not a requirement. It is largely a style decision. Text that is not capitalized just looks less formal and much "lighter". So it's not surprising that some newspapers do not capitalize the date. I found two examples in French and Dutch where the day name is not capitalized.
Newspapers with uncapitalized day names: A french and dutch newspaper showing "mercredi" (Wednesday) and "vrijdag" (Friday), uncapitalized. (Once again, apologies for the low quality of the screenshots)
Therefore, capitalization could be regarded as a stylistic decision, and not determined by locale. But in my personal opinion, I think the uncapitalized text looks weird, so I'm inclined to always capitalize it.
Handling of edge cases in software
The nuance of capitalizing the day names and months is something that is not considered when the internationalization libraries were created. As a result, a translator trying to localize an app will struggle to control exactly how date formats are displayed. For example using JavaScript's Intl.DateTimeFormat
API:
let locale = 'en';
enFormatter = new Intl.DateTimeFormat(locale, { dateStyle: 'full' });
enFormatter.format(new Date("2025-03-09"));
// Returns: "Sunday, March 9, 2025"
locale = 'fr';
frFormatter = new Intl.DateTimeFormat(locale, { dateStyle: 'full' });
frFormatter.format(new Date("2025-03-09"));
// Returns: "dimanche 9 mars 2025"
An option
object is passed into Intl.DateTimeFormat
to specify the "full" date style, but there is no way of controlling how the text should be capitalized in the context of a sentence or title.
The ramifications of this missing setting is subtle, but there are lots of places in software where a day name or month is shown which will show up as uncapitalized, and might look "odd" to a user.
Below are a couple of examples on iOS apps comparing English and Norwegian (Bokmål). The images on the left are in English, and the images on the right are in Norwegian, a language that does not capitalize the day names and months:
Settings: The settings page for "First day of week". With Norwegian as the language, the days of the week are all uncapitalized when it really should be capitalized. It is not typical for selection screens on iOS to have the options uncapitalized, so it looks out of place here.
Calendar App: The month view in the calendar app for March. "mars" should be "Mars", and "torsdag" should be "Torsdag". However, "6. mars 2025" is correct because the word "mars" is in the middle of the date.
Additional examples
Weather App: Like the Settings app, the days of the week in the weather forecast are all uncapitalized in Norwegian. Notably, this is not the case for "Today"/"I dag", so one cannot argue that it's a stylistic choice to have the labels all uncapitalized when there are inconsistencies.
Reminders App: The date picker when creating a reminder shows the name of the month uncapitalized when it should be capitalized.
It should be noted that the uncapitalized text is something that only occurs to less popular languages. Apparently in languages other than Scandanavian, Catalan, and Hungarian, the text is capitalized (with exceptions in a few places). Was this because a translator at Apple spotted this and changed something to deliberately capitalize the word in some situations? Or is this something inherent in the languages themsevles. I would love to know for sure.
Language | First day of week setting | Calendar App | Weather App | Reminders App |
---|---|---|---|---|
English | Capitalized | Capitalized | Capitalized | Capitalized |
German | Capitalized | Capitalized | Capitalized | Capitalized |
French | Capitalized | Uncapitalized | Capitalized | Capitalized |
Spanish | Capitalized | Uncapitalized | Capitalized | Capitalized |
Italian | Capitalized | Uncapitalized | Capitalized | Capitalized |
Portugeuse | Capitalized | Uncapitalized | Capitalized | Capitalized |
Dutch | Capitalized | Uncapitalized | Capitalized | Capitalized |
Polish | Capitalized | Uncapitalized | Capitalized | Capitalized |
Ukrainian | Capitalized | Uncapitalized | Capitalized | Capitalized |
Norwegian | Uncapitalized | Uncapitalized | Uncapitalized | Uncapitalized |
Swedish | Uncapitalized | Uncapitalized | Uncapitalized | Uncapitalized |
Danish | Uncapitalized | Uncapitalized | Uncapitalized | Uncapitalized |
Finish | Uncapitalized | Uncapitalized | Uncapitalized | Uncapitalized |
Catalan | Uncapitalized | Uncapitalized | Uncapitalized | Uncapitalized |
Hungarian | Uncapitalized | Uncapitalized | Capitalized | Not Applicable |
One way to handle the capitalization is through interpolation and custom formatters. But this solution largely depends on the capabilities of the localization software you are using. For more details see Interpolation assumptions: Assumptions about capitalization.
Narrow formatting of day names and months
In English the narrow format for every day of the week (Monday, Tuesday, Wednesday, etc.) will be:
M T W T F S S
It is however not guaranteed that it will be 1 character for all languages. For example in Hungarian the narrow format is:
H K Sz Cs P Sz V
A similar can happen with months as well:
English: J F M A M J J A S O N D
Hungarian: J F M Á M J J A Sz O N D
Maltese: Jn Fr Mz Ap Mj Ġn Lj Aw St Ob Nv Dċ