Skip to content
DevMeme
3914 of 7435
Localization Meets Ambiguous Date Formats
DataFormats Post #4260, on Mar 2, 2022 in TG

Localization Meets Ambiguous Date Formats

Why is this DataFormats meme funny?

Level 1: Two Calendars

Imagine two children get the same note: 2/3. One child was taught that the first number is the month, so they show up on February 3. The other was taught that the first number is the day, so they show up on March 2. The funny part is that the people in charge of making messages clear for different places wrote the kind of message that makes everyone confused.

Level 2: Parsing the Punchline

Internationalization, often shortened to i18n, means designing software so it can work across languages, regions, calendars, currencies, writing directions, and user expectations. Localization is the part where the product is adapted for a specific audience. Dates are one of the classic traps because many formats look familiar while meaning different things.

The sign shows two teams with the same meeting date:

US TEAM: 2/3/22
EU TEAM: 2/3/22

To a US reader, that usually means month/day/year. To many European readers, it usually means day/month/year. The stick figure's line says the European team will meet a month later because 2/3/22 can be parsed as either February 3 or March 2. Early-career developers often discover this when a form works locally, then a user in another country reports that birthdays, invoices, trial expirations, or appointment reminders are off. The fix is not "tell users to be less confusing"; the fix is to make the interface and data model explicit.

This is also why TechnicalCommunicationSkills matter in engineering. A requirement like "show the meeting date as 2/3/22" is incomplete unless it says whose locale, what timezone if time is involved, whether the value is a calendar date or an exact instant, and how it should be validated. The original post's phrase 2nd attempt to meet today adds a nice little twist: even the retry can depend on which calendar convention you thought the first attempt used.

Level 3: Calendar Shrapnel

LOCALIZATION WORKING GROUP
UPCOMING MEETINGS
US TEAM: 2/3/22
EU TEAM: 2/3/22

AND THE EUROPEAN FORMATTING AND LOCALIZATION TEAM WILL MEET A MONTH LATER...

The joke works because the sign commits the exact sin a localization working group exists to prevent: it publishes a date as an ambiguous string and lets each audience bring its own parser. In common US usage, 2/3/22 reads as February 3, 2022. In much of Europe, the same characters read as 2 March 2022. Nothing on the sign says which convention is authoritative, so both readings are plausible, and the speaker's "a month later" is not a misunderstanding so much as a predictable production incident with better handwriting.

This is a DataFormats problem wearing a meeting-room badge. A date shown to humans is not the same thing as a date stored in a system. Teams get into trouble when they reuse one representation for both jobs: a compact display string for people, a durable value for APIs, validation, logs, scheduling, reminders, and emails. MomentJSDateHandling, DateFNS, native Date, and backend serializers can all behave "correctly" inside their configured assumptions while the business outcome is still wrong. That is the special cruelty of localization bugs: the code may pass tests because the tests were written by people with the same cultural defaults as the code.

The visual simplicity makes the anti-pattern sharper. The board says LOCALIZATION WORKING GROUP, then immediately demonstrates Miscommunication, RequirementsAmbiguity, and weak DataValidation in four lines. A safer system would store an unambiguous date value, display it in each user's locale, and avoid naked numeric dates in cross-regional coordination. 2022-03-02, 3 February 2022, and 2 March 2022 are not equally pretty, but prettiness has never joined the incident call and apologized.

Description

The image is a black-and-white hand-drawn comic about a localization working group. A sign reads "LOCALIZATION WORKING GROUP", "UPCOMING MEETINGS", "US TEAM: 2/3/22", and "EU TEAM: 2/3/22". A stick figure on the right says, "AND THE EUROPEAN FORMATTING AND LOCALIZATION TEAM WILL MEET A MONTH LATER..." The joke is that the same date string means February 3 in common US formatting and 2 March in common European day-first formatting, which is exactly the kind of ambiguity localization teams exist to prevent.

Comments

52
Anonymous ★ Top Pick ISO 8601 exists because `2/3/22` is a distributed-systems bug wearing a calendar costume.
  1. Anonymous ★ Top Pick

    ISO 8601 exists because `2/3/22` is a distributed-systems bug wearing a calendar costume.

  2. @beton_kruglosu_totchno 4y

    ffs

  3. @waifu_anton 4y

    Oh, I think they are too busy right now for this

  4. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

    The best time format is 2022 3. 4. 14:41 (YYYY MM DD hh:mm)

    1. @sylfn 4y

      March 4, 2022 is written?

      1. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

        Yes

        1. @sylfn 4y

          why dots

          1. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

            Why not also that part I dont care about

            1. @sylfn 4y

              aaah now understand

    2. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

      This is written like numbers (biggest value in the front smallest to the end)

    3. @dugeru42 4y

      lets go for base10 in datetime

    4. @CcxCZ 4y

      https://m.xkcd.com/1179/ https://ijmacd.github.io/rfc3339-iso8601/

      1. @dugeru42 4y

        yay

      2. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

        The best one is the one plasing everything ontop of eachother

  5. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

    Idk why US citizens use even for thier dates little endian

  6. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

    Also idk why germans write 137 but pronounce it as "100, 7 and 30"

    1. @sylfn 4y

      Russia: 6 шесть 10 десять 5 пять 65 шестьдесят пять (6 * 10 + 5) looks logical? yes 37 тридцать семь (3 * other_10 + 7) looks logical? probably yes 42 сорок два (40? + 2) 96 девяносто шесть ("9 but 100"? + 6) 9 девять 100 сто looks logical? probably no 11 одиннадцать (1 + other_10) 12 двенадцать (2 + other_10) 30 тридцать (3 * other_10) 13 тринадцать (3 + other_10) what the fuck...

      1. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

        What is the word for 10?

        1. @sylfn 4y

          fixed

          1. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

            Ah

        2. @sylfn 4y

          "десять", but in older times it was "дцать" (?)

          1. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

            Ah

      2. @beton_kruglosu_totchno 4y

        42 сорок два (40? + 2) because there is no четырдцать because nobody wants to traumatize the tongue 96 девяносто шесть ("9 but 100"? + 6) because there is no девядцать 11 одиннадцать (1 + other_10) what's the problem?

  7. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

    1387465 is pronounced as: 1000000, 300, 7 and 80000, 400, 5 and 60

    1. @sylfn 4y

      what the....

  8. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

    Hungarian it is: 1 egy 2 kettő 3 három 4 négy 5 öt 6 hat 7 hét 8 nyolc 9 kilenc 10 tíz 11 tizenegy 12 tizenkettő 13 tizenhárom 19 tizenkilenc 20 húsz 21 huszonegy 24 huszonnégy 30 harminc 31 harmincegy 40 negyven 41 negyvenegy 50 ötven 60 hatvan 70 hetven 80 nyolzvan 90 kilencven 100 száz 101 százegy 200 kettőszáz 200 kétszáz 202 kettőszázkettő 202 kétszázkettő

    1. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

      @yuki0iq

      1. @sylfn 4y

        Looking

        1. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

          I think it is very logical to pronounce. (Could be only because this is my primary language)

          1. @sylfn 4y

            1 egy 10 tiz -- what 11 tiz en egy (10 en 1) 2 ketto 20 husz -- what 21 husz on egy (20 on 1) -- what? 3 harom 30 harminc -- maybe 31 harminc egy (30 1) -- what? 4 negy 40 negy ven (4 ven) -- maybe, no hope... 41 negy ven egy (40 1) looks logical 100 szaz 200 ketto szaz (2 100) -- logical? 200 kettszaz -- what?

            1. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

              1* tizen* 2* huszon* You cant say "húsz on" it makes not much sense. Its really be understood that way

              1. @sylfn 4y

                what are "en" and "on"?

                1. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

                  Its not a seperate word. Its just that its twenty and something

                  1. @sylfn 4y

                    why not for 30-90?

                    1. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

                      Because Harminc is from "older?" numbers

                      1. @sylfn 4y

                        ahhh, legacy

                        1. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

                          Egy Két Há Négy Öt Hat ...

                          1. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

                            Used in musical tacting for example

  9. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

    Also look what happens to the marking in tíz húsz etc

    1. @sylfn 4y

      ohhh

  10. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

    Probably because you cant say the full numbers in one tact😂😂😂

  11. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

    I mean you can

  12. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

    But it's not sounding good/understandable

  13. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

    Btw: cs dz dzs gy ly ny sz ty are one sound and are also defined as 1 letter

    1. @beton_kruglosu_totchno 4y

      but are people throwing it away or is it persistent?

      1. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

        The dzs is only used in 2 words so idk why its still in our alphabet... but everything else is very important

  14. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

    You also can never split them

  15. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

    If you want to double them, then you only double the first one (dzs can't be doubled and there are literally 2 words that use it) Like double sz would be ssz

  16. @ZgGPuo8dZef58K6hxxGVj3Z2 4y

    L sounds just like the L in hello. But LY sound like Y in you. The J sound exactly the same. This is the only thing in Hungarian writing that has no true rule. Because it doesn't matter which one you use while writing. In spoken language its the same

  17. @sylfn 4y

    write 100 + 20 + 3 in flie names: 123 for everyday stuff: 321

    1. @dugeru42 4y

      days change quicker, years you need not very often

      1. @sylfn 4y

        sort to folders like 2022-03

Use J and K for navigation