-- Leo's gemini proxy

-- Connecting to jacksonchen666.com:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini;lang=en

A Date and Time Formatting Rant

2023-09-10 15:43:09Z



Date and time formats. It's that thing that people for some reason, cannot decide on at all, and instead make lots of nonsense.


Date time formatting


You've probably seen expiry dates on food and stuff that expires. Have you ever been confused on whether it is Day/Month/Year, or Month/Day/Year, or Day/Year/Month, or Year/Month/Day, or whatever the fuck someone decided to use?


Ultimately, I think there's only 1 date and time formatting that makes sense: from the biggest, to the smallest.


Here's the order from biggest time unit, and the smallest time unit (that most people may care about):

1. Year

2. Month

3. Day

4. Hour

5. Minute

6. Seconds


So a date time format of Year/Month/Day Hour:Minute:Seconds should work, right?


Yes. Except for timezones.


Timezone communication


Timezone abbreviations are my least favorite things. Mind you, I still haven't done enough computer programming to deal with date time stuff, so this is very much outside of computer programming. This timezone abbreviation issue is more of a communication problem.


Communication problem? What do I mean by that? Just say that your timezone is CEST and that's good enough.


Nope. What the fuck is "CEST" anyways? I'm sure the only person who knows every single timezone abbreviation and what timezone it actually corresponds to is someone who could spend 4 hours infodumping about timezones and time as well.


In case you didn't know what the CEST timezone is, you would have had to search online somewhere or refer to some table of timezones. That's very not ideal for understanding fast, and referring to something else is required.


The better solution would been to include the offset from UTC. In the case of CEST, that would be UTC+02:00 or 2 hours ahead of UTC.


Now, how do we combine everything together?


ISO 8601


You've probably heard of it. There's even an XKCD for ISO 8601.

XKCD for ISO 8601


ISO 8601 is a standard for representing date time formats.


ISO 8601 on Wikipedia


Here's the current date and time of what I have on my computer, in ISO 8601 format:


2023-09-10T17:11:53+02:00

The format is basically like this from left to right:

1. Year (4 digits)

2. Dash separator

3. Month (number, not name)

4. Dash separator

5. Day of month

6. Literal T separating time from the date

7. Hour

8. Colon separator

9. Minute

10. Colon separator

11. Seconds

12. Ahead or behind UTC indicator (+ is ahead, - is behind)

13. Hour offset from UTC

14. Colon separator

15. Minute offset from UTC


To simplify the format:

1. Date

2. Time

3. Timezone relative to UTC


The timezone part indicates the timezone of the time, so to change the timezone to UTC, it would result in this:


2023-09-10T15:11:53+00:00

That's the same date and time as above, just with a different timezone.


ISO 8601 also has an abbreviation for the UTC timezone, which is the letter Z, which can be used instead like this:


2023-09-10T15:11:53Z

Fun fact: I use ISO 8601 date time formatting for my website pretty much everywhere. The date would look something like this:


2023-09-10

And you can see that on my gemlog listings.

Homepage with gemlog listing


RFC 3339


Oh, I think I may have to address the elephant in the room...


ISO documents aren't free by any means. They cost money, and ISO 8601 documents cost quite a bit of money.


ISO 8601-1:2019

ISO 8601-2:2019


So the alternative was RFC 3339, which is the alternative to the ISO 8601 standard. However, it's not the same as ISO 8601.


RFC 3339

ISO 8601 to RFC 3339 comparison


And well... yeah. RFCs I guess.


public inbox (comments and discussions)

public inbox archives

(mailing list etiquette for public inbox)

-- Response ended

-- Page fetched on Fri May 10 02:31:48 2024