Note: this only stores the local timezone and keep it in your timestamps. It'll replace any timezone information by your local one. But at least it'll store your current local one.
Note2: all timestamps will work to my knowledge, but time ranges are then ambiguously displayed. Thanks to @He Yifei 何一非 to bring that up.
This is what I did:
(setq org-time-stamp-formats '("<%Y-%m-%d %a>" . "<%Y-%m-%d %a %H:%M %Z>"))
The important part is the
default is (from orgmode source):
(defconst org-time-stamp-formats '("<%Y-%m-%d %a>" . "<%Y-%m-%d %a %H:%M>")
"Formats for `format-time-string' which are used for time stamps.")
With this setting, all instances of timestamps in
orgmode that I use and can think of get the timezone information added (ie:
<2020-09-15 Tue 09:00 CEST>):
- modifying dates by hand and using
C-c C-c (timezone will get added if missing)
- Clockin and Clockout with
C-c C-x C-i /
C-c C-x C-o
org-time-stamp when inserting time and not only date info
And I didn't notice any issue, except that time ranges are not really useable (I don't use them). I'm using quite extensively all the clock/timestamps. This setting is available in
orgmode for a very long time, before 2008 for sure, according to
org git repository.
Let me add the fact that you should probably NEVER store naive timestamps (without timezones) anywhere. It is a pity that orgmode does this by default. Thankfully, it is easy to fix.