emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Max Nikulin <manikulin@gmail.com>
To: emacs-orgmode@gnu.org
Subject: Re: Two problems with export to Google calendar
Date: Mon, 12 Dec 2022 23:53:04 +0700	[thread overview]
Message-ID: <tn7m9h$1u7$1@ciao.gmane.io> (raw)
In-Reply-To: <87sfhkg1sd.fsf@localhost>

On 12/12/2022 21:00, Ihor Radchenko wrote:
> Max Nikulin writes:
> 
>>> By default, ox-icalendar takes the value of your TZ environment variable.
>>
>> I think, in most cases TZ is not set, so (format-time-string "%Z") is
>> used to get abbreviation (that is ambiguous).
>>
>> On Linux we may try
>>
>>       timedatectl show --property=Timezone --value
> 
> According to POSIX standard
> (https://pubs.opengroup.org/onlinepubs/9699919799/), we need to use "TZ"
> environment variable, when present. Otherwise, fallback to defaults.

I do not try to dispute such statement. The question is what should be 
taken as the default.

> This is exactly what ox-icalendar does. If TZ is set, use it. Otherwise,
> use `current-time-zone'.
...
> The issue in this bug report is that TZ is actually set. Ambiguously. In
> OS. We cannot do much about it. Outsmarting system settings is not a
> good idea.

The TZ environment variable is not set and that is the issue. Otherwise 
the .ics file would have

X-WR-TIMEZONE:Europe/London

The problem is that there is no API to get time zone identifier in elisp 
because such function is missed in libc. It is possible to get only 
BST/GMT (depending on current season).

Identifiers like Europe/London allows to get history of time 
transitions. (format-time-string "%z %Z") and (current-time-zone) may 
only report time offset and ambiguous abbreviation at particular moment. 
Return values of these functions may vary for different timestamps in 
the calendar file. If list of time zones were available then it would be 
possible to iterate over it and to match particular time zone by 
abbreviation and offset for most of zones (perhaps some ambiguity would 
remain).

Actually `current-time-zone' is an example of fragile API for *current* 
time. Offset is valid for particular moment. There is no guarantee that 
offset would not change between obtaining it and applying to a 
timestamp. So the only safe way of using this function is with the 
SPECIFIED-TIME argument. In such case *current* in the function name is 
confusing.

So in my previous message I was considering feasibility of some 
platform-dependent code to determine time zone when neither TIMEZONE Org 
file property nor TZ environment are specified.



  reply	other threads:[~2022-12-12 16:53 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-07 11:30 Two problems with export to Google calendar Neil Jerram
2022-12-07 11:52 ` Neil Jerram
2022-12-07 12:56 ` Ihor Radchenko
2022-12-07 14:00   ` Max Nikulin
2022-12-12 14:00     ` Ihor Radchenko
2022-12-12 16:53       ` Max Nikulin [this message]
2022-12-13  9:56         ` Ihor Radchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='tn7m9h$1u7$1@ciao.gmane.io' \
    --to=manikulin@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).