YES! I wish more people knew about RFC 3339. While I’m all for ISO 1601, it’s a bit too loose in its requirements at times, and people often end up surprised that it’s just not the format they picked…
Huh, I’ve never noticed how much bloat was in ISO 8601. I think when most people refer to it, we’re specifically referring to the date (optionally with time) format that is shared with RFC 3339, namely 2023-11-22T20:00:18-05:00 (etc). And perhaps some fuzziness for what separates date and time.
I have autohotkey configured to insert the current date in ISO 8601 format into my filenames on keyboard shortcut for just this reason. So organized. So pure.
Download Autohotkey, and create a new script. Paste these shortcuts into the script and restart the script:
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
:R*?:ddd::
FormatTime, CurrentDateTime, yyyy-MM-dd
SendInput %CurrentDateTime%
return
:R*?:dtt::
FormatTime, CurrentDateTime, yyMMddHHmm
SendInput %CurrentDateTime%
Return
Now, if you type ‘ddd’ on your keyboard, the current date will be typed out, eg ‘2023-11-23’.
If you type ‘dtt’ tgen the datetime stamp will be typed out in YYMMDDhhmm format, eg 2311231012
There are so many cool things you van do with AHK to make your work more productive. For example, rather tgan typing your email address a billion times, add the shortcut:
(This doesn’t consider the separator)
Cyan - DD/MM/YY
Magenta - MM/DD/YY
Yellow - YY/MM/DD
The other ones are mixes of those two colors, so e.g. the US is MM/DD/YY and YY/MM/DD (apparently).
Also just noticed I didn’t attribute this picture, I’ll edit my comment.
We are ridiculously inconsistent in Canada. I’ve seen all 3 of the most popular formats here (2023-11-22, 11/22/2023, and 22/11/2023) in similarish amounts. Government forms seem to be increasingly using RFC 3339 dates, but even they aren’t entirely onboard.
Lithuania is one of the Baltic States, conveniently squished between Russia & Belarus to the east and the sea to the west. Across that sea is Sweden. You’ll usually see three countries be the parts of this set. Lithuania is the southernmost of these three.
Funny thing, in ISO 8601 date isn’t separated by colon. The format is “YYYY-MM-DDTHH:MM:SS+hh:mm”. Date is separated by “-”, time is separated by “:”, date and time are separated by “T” (which is the bit that a lot of people miss). Time zone indicator can also be just “Z” for UTC. Many of these can be omitted if dealing with lesser precision (e.g. HH:MM is a valid timestamp, YYYY-MM is a valid datestamp if referring to just a month). (OK so apparently if you really want to split hairs, timestamps are supposed to be THH:MM etc. Now that’s a thing I’ve never seen anyone use.) Separators can also be omitted though that’s apparently not recommended if quick human legibility is of concern. There’s also YYYY-Wxx for week numbers.
Had a coworker who used MMDDYY with no dashes. Unless you knew it was very hard to figure out, since it could also just be a number that happened to be 6 digits, too. At least YYYY-MM-DD looks like a date generally.
“I can reuse this old function if I just monkey-patch this other class to work with it, no one will have any issues understanding what’s going on”
Edit: Thought this was the programmerhumor community. For context:
A monkey-patch is when you write code that changes the behaviour of some completely different code when it is running, thus making its inner workings completely incomprehensible to the poor programmer using or reading your code.
In many of them but not all, because it’s become convention and has been enshrined in their documentation policies. cGMP just requires that your quality management system has a policy in place that specifies how to document the date, and when exceptions are allowed (for instance, data printouts where YYYY-MM-DD is often the default).
It’s also the reason some labs require you to initial/date every page of printed data, and some only require you to initial/date the first and/or last page. I’ve seen FDA auditors be okay with both, as long as you can justify it with something like: our documentation policy defines the printout as a copy of the original data, and the original data as what’s stored on machine memory with electronic signature; versus: our documentation policy defines the original signed/dated data printout as the original data. In any case, it still has to follow 21 CFR part 11 requirements for electronic records & signatures, where the only date predicate rule example they give is 58.130(e), which itself is broad and only applies to non-clinical lab studies. It’s notable that the date format 21 CFR 11 itself uses is actually Month D, YYYY, with no zero padding on the day.
And if you don’t have IQ/OQ/PQ documentation showing how you locked down and validated the software’s ability to maintain an audit trail you can’t even use electronic records (or signatures).
YYYY-MM-DD is the only acceptable date format, as commanded by ISO 8601.
“There shall be no other date formats before ISO8601. Remember this format and keep it as the system default”
Largest to smallest unit of time. It just makes sense.
Sorting by date would be so much better with yyyymmdd .
ISO 8601, while great, has too many formats. May I introduce RFC 3339 instead?
https://ijmacd.github.io/rfc3339-iso8601/
That is what I love so much about standards: there are so many to choose from.
https://xkcd.com/927/
YES! I wish more people knew about RFC 3339. While I’m all for ISO 1601, it’s a bit too loose in its requirements at times, and people often end up surprised that it’s just not the format they picked…
Huh, I’ve never noticed how much bloat was in ISO 8601. I think when most people refer to it, we’re specifically referring to the date (optionally with time) format that is shared with RFC 3339, namely 2023-11-22T20:00:18-05:00 (etc). And perhaps some fuzziness for what separates date and time.
If you have years of files named similarly with the date, you will love the ISO standard and how it keeps things sorted and easy to read.
I have autohotkey configured to insert the current date in ISO 8601 format into my filenames on keyboard shortcut for just this reason. So organized. So pure.
Holy shit teach me your ways how do I do that
Download Autohotkey, and create a new script. Paste these shortcuts into the script and restart the script:
Now, if you type ‘ddd’ on your keyboard, the current date will be typed out, eg ‘2023-11-23’.
If you type ‘dtt’ tgen the datetime stamp will be typed out in YYMMDDhhmm format, eg 2311231012
There are so many cool things you van do with AHK to make your work more productive. For example, rather tgan typing your email address a billion times, add the shortcut:
And then you can type ‘add1’ and hit space, and your email address will be typed out in full. Of course, the string ‘add1’ can be whatever you want.
I love you.
💕
Are you familiar with AHK at all?
Nope not yet
Much date. Very logic.
Glad I can count my own country, Lithuania, among the enlightened.![](https://programming.dev/pictrs/image/1e398790-5848-431e-98b0-61a9e6712158.png)
EDIT: Source of the picture: https://en.m.wikipedia.org/wiki/File:Date_format_by_country_NEW.svg
Which color is which?
(This doesn’t consider the separator) Cyan - DD/MM/YY Magenta - MM/DD/YY Yellow - YY/MM/DD The other ones are mixes of those two colors, so e.g. the US is MM/DD/YY and YY/MM/DD (apparently).
Also just noticed I didn’t attribute this picture, I’ll edit my comment.
Canada threw up their hands and said, “Fuck it, I don’t care, use whatever date format you like.”
We are ridiculously inconsistent in Canada. I’ve seen all 3 of the most popular formats here (2023-11-22, 11/22/2023, and 22/11/2023) in similarish amounts. Government forms seem to be increasingly using RFC 3339 dates, but even they aren’t entirely onboard.
where’s that? somewhere in africa?
/s because apparently it’s not implied
Are you from the US? This is a legit question…
I seem to have dropped my /s. But yes.
Lithuania is one of the Baltic States, conveniently squished between Russia & Belarus to the east and the sea to the west. Across that sea is Sweden. You’ll usually see three countries be the parts of this set. Lithuania is the southernmost of these three.
Soo… yes to being in Africa?
/s
YYYY-MM-DD:HH:MM:SS
Funny thing, in ISO 8601 date isn’t separated by colon. The format is “YYYY-MM-DDTHH:MM:SS+hh:mm”. Date is separated by “-”, time is separated by “:”, date and time are separated by “T” (which is the bit that a lot of people miss). Time zone indicator can also be just “Z” for UTC. Many of these can be omitted if dealing with lesser precision (e.g. HH:MM is a valid timestamp, YYYY-MM is a valid datestamp if referring to just a month). (OK so apparently if you really want to split hairs, timestamps are supposed to be THH:MM etc. Now that’s a thing I’ve never seen anyone use.) Separators can also be omitted though that’s apparently not recommended if quick human legibility is of concern. There’s also YYYY-Wxx for week numbers.
YYYY-MM-DD:HH:MM:SS+TZ
RFC3339! It’s like ISO8601, but good!
YYYY-MM-DDTHH:MM:SS.SSSSSSSSSZ
I love the nanosecond format! I was playing with the date command earlier and came across this.
This, but all run together.
I write files/reports to disk a lot from scripts, so that’s my preferred format.
I just go for a unix timestamp and use terminal/filemanager to sort by or display the datetime
Are you talking epoch? I don’t care for that mainly because it’s not human readable. I see the use for it, but I struggle with it in practical use.
Yep. I mostly like datetimes for simple sorting. If it needs to be human readable iso is the way to go tho.
For file names, absolutely.
When I’m asking what date it is I typically know the current year.
Well la-tee-dah, look at mister not-shitfaced-every-day here, bragging like a big man
I can lie under the table, puking my guts out and still remember the year.
You need more training, son.
Except the information is given least to most important, making verbal abbreviation difficult. Works great for file names though.
There’s this really cool shorthand where you drop the year because it seldom changes. It’s called MM-DD
Yeah and if you need to know what year, you can just add it to the end like this MM-DD-YY.
MM-DD-YY is the worst abomination I’ve seen yet
12-04-08
good luck figuring out what that is
Had a coworker who used MMDDYY with no dashes. Unless you knew it was very hard to figure out, since it could also just be a number that happened to be 6 digits, too. At least YYYY-MM-DD looks like a date generally.
Wow it’s my exact birthday. Good luck figuring out my age.
“I can reuse this old function if I just monkey-patch this other class to work with it, no one will have any issues understanding what’s going on”
Edit: Thought this was the programmerhumor community. For context: A monkey-patch is when you write code that changes the behaviour of some completely different code when it is running, thus making its inner workings completely incomprehensible to the poor programmer using or reading your code.
Is that why the military uses that format?
Yep, you can easily sort it just because of the ordering. It’s a full standard
No. No you can’t.
In a GMP laboratory it’s 22NOV2023 no ambiguity.
In many of them but not all, because it’s become convention and has been enshrined in their documentation policies. cGMP just requires that your quality management system has a policy in place that specifies how to document the date, and when exceptions are allowed (for instance, data printouts where YYYY-MM-DD is often the default).
It’s also the reason some labs require you to initial/date every page of printed data, and some only require you to initial/date the first and/or last page. I’ve seen FDA auditors be okay with both, as long as you can justify it with something like: our documentation policy defines the printout as a copy of the original data, and the original data as what’s stored on machine memory with electronic signature; versus: our documentation policy defines the original signed/dated data printout as the original data. In any case, it still has to follow 21 CFR part 11 requirements for electronic records & signatures, where the only date predicate rule example they give is 58.130(e), which itself is broad and only applies to non-clinical lab studies. It’s notable that the date format 21 CFR 11 itself uses is actually Month D, YYYY, with no zero padding on the day.
And if you don’t have IQ/OQ/PQ documentation showing how you locked down and validated the software’s ability to maintain an audit trail you can’t even use electronic records (or signatures).
It’s alphabetically sortable too. Name backups like this.
The truth. Amen