From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp12.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id EPqWMe4222MxFQEAbAwnHQ (envelope-from ) for ; Thu, 02 Feb 2023 05:07:10 +0100 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp12.migadu.com with LMTPS id gIiYMe4222PCRAEAauVa8A (envelope-from ) for ; Thu, 02 Feb 2023 05:07:10 +0100 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 00103183FD for ; Thu, 2 Feb 2023 05:07:09 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pNQrR-0004gN-55; Wed, 01 Feb 2023 23:06:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pNQrQ-0004g8-4C for emacs-orgmode@gnu.org; Wed, 01 Feb 2023 23:06:08 -0500 Received: from out3-smtp.messagingengine.com ([66.111.4.27]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pNQrL-0005Tg-13 for emacs-orgmode@gnu.org; Wed, 01 Feb 2023 23:06:07 -0500 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 9798F5C00D3; Wed, 1 Feb 2023 23:05:59 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Wed, 01 Feb 2023 23:05:59 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tecosaur.net; h= cc:cc:content-type:date:date:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:sender:subject :subject:to:to; s=fm3; t=1675310759; x=1675397159; bh=zxR/FXf4un EV8Q7zknAhDGcysNWzf1hF948Iy82XAJc=; b=O77O8tjYVOCg8eSpEZPgeME/XC 0COmZCf3W08DGQ395VwFIPKcZeZVnvxnYhd78Q3jOPr9E9PHQAGoKgms8GsJEmFv o24Cj+JPuuKRQlugklUXbGEUeePcyB4CF/ESywdRkNT8tfE/CDChjDohi4vtUXSy TIheBoRP2wMQpFAaYy5ZGctgXY77ydkffmujXh48o8R4hyyTtHSEwIlN1SD7GCuO rbQqitz4Ez6Xwa4/IknFmE8BgXzICyJSEzjEql3MlmoF9BM9o563IWklbP6TYH+w iJK9tJfzzrCu05PjMVuRJDJ7HwMPVR8kH8vHJEiRQ0ZGEzFft42wFKoYz1WQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:sender:subject:subject:to:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; t=1675310759; x=1675397159; bh=zxR/FXf4unEV8Q7zknAhDGcysNWz f1hF948Iy82XAJc=; b=UzbZuSTfjkbgr+z34c/CXdGijQ5KK0g79CCXxi7MygAh Q5iV9rJHDGMnzgJ4OLAdyo2tXez8gay4GFpbeq+GY5U+94Vt6FzHPA3cRsy3ZgZ/ 6T8Y3SWHOSXvB+HRluFiZJOVGlOGrwP69NMC7Qmm17d5bi1OsweQ49T7bPepMzxK aQ+iBbbvPHnHyFfvmyrE/TMQf6ah23gyqwd3Iy/qrhINrQxozPTfd+JMoY01iUgr Ken6Gcr/SI0BxizJu5q94q6Y0HS3pKvmM4P6rlroP7puE+EtZ1cDwKcUhylkUfdq jf5LdUc93nqimVO7p5xGZkMo2MzjXimUNSzqlzAqJg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudefjedgjedtucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhvfevuffffhgfjgfkgggtsehmtd erredtreejnecuhfhrohhmpefvihhmohhthhihuceoohhrghhmohguvgesthgvtgdrthgv tghoshgruhhrrdhnvghtqeenucggtffrrghtthgvrhhnpeejgfeltdegkeelleejvdekfe eujeelteefffegtedvkeffvdefkeeghfelhefhheenucffohhmrghinhepihgvthhfrdho rhhgpdhorhhgmhhouggvrdhorhhgpdhlihgsvghrrghprgihrdgtohhmnecuvehluhhsth gvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepohhrghhmohguvgesthgv tgdrthgvtghoshgruhhrrdhnvght X-ME-Proxy: Feedback-ID: iecf94634:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 1 Feb 2023 23:05:58 -0500 (EST) From: Timothy To: Ihor Radchenko Cc: emacs-orgmode@gnu.org Subject: Re: [POLL] Proposed syntax for timestamps with time zone info (was: [FEATURE REQUEST] Timezone support in org-mode datestamps and org-agenda) Date: Thu, 02 Feb 2023 11:46:38 +0800 References: <63c66048.630a0220.427bf.a5f6@mx.google.com> <87r0vtiks0.fsf@localhost> <63c671c0.a70a0220.61aa5.56b8@mx.google.com> <87fsc88aq9.fsf@localhost> <63c7dd3d.170a0220.6b4d6.f84f@mx.google.com> <877cxk6oeu.fsf@localhost> <63c86454.170a0220.80970.652d@mx.google.com> <63c8f5a6.170a0220.ea8cf.7f96@mx.google.com> <63c9b654.170a0220.d82d2.4254@mx.google.com> <87mt6e86sr.fsf@tsdye.online> <63c9d976.620a0220.a7d40.113b@mx.google.com> <87tu0mjb24.fsf@tsdye.online> <63ca1283.170a0220.5bc81.0fdd@mx.google.com> <87pmb9k8oi.fsf@tsdye.online> <3035CDD5-41DD-4516-9E4E-9E0DF16BE2E0@gmail.com> <87lelo8c9r.fsf@localhost> <2150768.1675077958@archlinux> <87tu063ox2.fsf@localhost> User-agent: mu4e 1.8.13; emacs 28.2.50 In-reply-to: <87tu063ox2.fsf@localhost> Message-ID: <87a61wn23k.fsf@tec.tecosaur.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: none client-ip=66.111.4.27; envelope-from=orgmode@tec.tecosaur.net; helo=out3-smtp.messagingengine.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: emacs-orgmode-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN ARC-Seal: i=1; s=key1; d=yhetil.org; t=1675310830; a=rsa-sha256; cv=none; b=GX0ke6i5X7G2FVfeCrGyoqnTAwuu9PGPmheaVbycOF0IaHpjhsyirK7wcLLvOWdaKm5tbw 6ZB0F/cR6CXzbYllefhySjttQKWyL8NTmggOpB27M3k6/xsx7ikOZqPRHNyEsbkUBxJ5dh JTxNxATlGTte0HjVBja8wJrVANOoynUV4FR/25qqyfUVZAw4dmIqLpYpZ/0MYfKYVrM/SG iHFD5e19g2xoHtN2uCwKr3s9tJfINDac9PF41QGlj7hMh8MxzPqFd128J8N6S/4wd19t47 51ck4ardJfiDLoKOpEwP5sJnBZpMU9HEHcZ0HnLKP3ek9zJx63+NG6Z1nTA4DQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=tecosaur.net header.s=fm3 header.b=O77O8tjY; dkim=fail ("headers rsa verify failed") header.d=messagingengine.com header.s=fm3 header.b=UzbZuSTf; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1675310830; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=zxR/FXf4unEV8Q7zknAhDGcysNWzf1hF948Iy82XAJc=; b=Pt5a/LaFApAQrZUtIUMMWQSlkj6z78ZrwKWnDhyLo7sSfTl1XSQ0hcuNtnSAJjnQimRRm6 GP5z3dlrCncXKrIZPC5D/JM7chZbDD6A8OqC2lX7JTXOxyPDTu08XKRGkXc3OSdhBWuqWC ZFXT3g1eBHnRVkKoLnIBLHZ8W2jyZgCVWXLGnyQM9zD18uAV+cbwci3BKbxjdk81gzLjCc r1dUP3069sqtCfozW7pGlGZL8L2dGKWB7/+1vmG2Eaj+03rv6inEd3nlIffC9fecK9ObUv 1kvuLAhTi9q7TVUIP06dThrOD1vO2aJ/fcj6t3H8asu36HbwvDHekVSErg/mpA== Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=tecosaur.net header.s=fm3 header.b=O77O8tjY; dkim=fail ("headers rsa verify failed") header.d=messagingengine.com header.s=fm3 header.b=UzbZuSTf; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=none X-Migadu-Scanner: scn1.migadu.com X-Migadu-Spam-Score: 3.52 X-Spam-Score: 3.52 X-Migadu-Queue-Id: 00103183FD X-TUID: htyIgTvFVNI3 --=-=-= Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi Ihor, Thanks for the detailed proposal! The effort you=E2=80=99ve put into solici= ting feedback and working out an effective and concise proposal is most commendable =F0= =9F=98=83. > I propose two forms of time zone information in Org timestamps > > 1. Timestamp with explicit UTC offset > > YYYY-MM-DD [optional day name] HH:MM[^ \]>]*?[+-=E2=88=92]HH[MM]? > YYYY-MM-DD [optional day name] HH:MM[^ \]>]*?Z[ \]>] > > =E2=80=9C-=E2=80=9D is latin =E2=80=9CHYPHEN-MINUS=E2=80=9D (code 0x2D) > =E2=80=9C=E2=88=92=E2=80=9D is unicode =E2=80=9CMINUS SIGN=E2=80=9D (c= ode 0x2212), as prescribed by ISO8601 > we will not actually use it when generating timestamps, but allow it > to keep some compatibility with ISO standard. > > =E2=80=9CZ=E2=80=9D in the second format refers to =E2=80=9CZulu=E2=80= =9D time (another name for UTC) > and must be either the last character in the timestamp or the > last character before space. Not sure if many users are familiar with > =E2=80=9CZ=E2=80=9D convention, but it is (1) in ISO; (2) succinct for= users who are > familiar with it. We will prefer +00 number offset in auto-generated > timestamps. > > Examples: > 2022-11-12 12:00+02 # 12:00 UTC+2 > 2022-11-12 14:00+0230 # 14:00 UTC+2:30 > 2022-11-12 14:00-0230 # 14:00 UTC-2:30 > 2022-11-12 14:00Z # 14:00 UTC > > The offset is a subset of what is defined by ISO8601. > > Note that unlike ISO8601, =E2=80=9C:=E2=80=9D is not allowed in the of= fset specifier. > This is to disambiguate with the time intervals in Org timestamps: > [2022-11-12 Sat 08:00]=E2=80=93[2022-11-12 Sat 09:00] in Org is a tim= e range from 8am to 9am. > > For time ranges, we will only allow a single offset and time zone > specifier for both start and end times: > [2022-11-12 Sat 08:00]=E2=80=93[2022-11-12 Sat 09:00] > If different time zones are necessary to specify the start/end times, > users can still use full timestamp range syntax > [2022-11-12 Sat 08:00]=E2=80=93[2022-11-12 Sat 22:00] > > The format is also forward-compatible with extending Org timestamps > for second/sub-second precision: 2022-11-12 14:00:05.0012+0230 will > remain valid if we decide to adopt such format. This functions well, however I see a potential to be confusing at a glance = here. Consider the visual similarity of 10:30 to 11:00 in local time and 10:30 in UTC-11, and the combination of both. =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 [2022-11-12 10:30-11:00] =E2=94=82 [2022-11-12 10:30-1100] =E2=94=82 [2022-11-12 10:30-11:00-1100] =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 I=E2=80=99d be inclined to put the UTC offset together with the time zone n= ame if possible. Do you think something along the lines of `@-1100,America/Anchora= ge' could be viable? I=E2=80=99d think that would reduce the chance of confusio= n. =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 [2022-11-12 10:30-11:00] =E2=94=82 [2022-11-12 10:30 @-1100] =E2=94=82 [2022-11-12 10:30-11:00 @-1100] =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 Looking at this, I also personally rather like that it puts all the timezone information together in a single `@TZINFO' token. > 2. Timestamp with time zone specifier > > YYYY-MM-DD [optional day name] HH:MM[^ ]* @[!]?<[^ \]>]> > > For now, time zone name will only be processed when it follows TZ > POSIX format. If necessary, the proposed syntax will still allow > extensions to TZ POSIX. > > Examples: > 2022-11-12 12:00 @Asia/Singapore # tzdb syntax > 2022-11-12 10:00 @Europe/Berlin > 2022-11-12 10:00 @!Europe/Berlin # =E2=80=9C!=E2=80=9D does nothing he= re, see below > 2022-11-12 10:00 @EST+5 # TZ syntax > 2022-11-12 10:00 @EST+5EDT,M3.2.0/2,M11.1.0/2 # manual time zone spec = allowed in TZ > > The =E2=80=9C@=E2=80=9D symbol is selected to disambiguate time zone s= pecifier from > other auxiliary information in the timestamp. Like calendar name, > which might be added in future. Note that we cannot use [=E2=80=A6] fr= om > the standard draft. I selected =E2=80=9C@=E2=80=9D because it is read = as =E2=80=9Cat=E2=80=9D - > location specifier. > > The =E2=80=9C!=E2=80=9D symbol is adapted from > > > I use space before =E2=80=9C@=E2=80=9D to improve readability. We devi= ate from the > standard here so may as well. In contrast, no space before [+-]offset > is closer to the standard yet not cluttering the timestamp too much > (IMHO). This looks like it works rather nicely to me. > 3. (1) and (2) can be combined > > 2022-11-12 12:00+08 @Asia/Singapore > > Org will unconditionally use +08 offset and ignore the time zone > name. We prefer absolute offset because it is non-ambiguous wrt > out-of-date tzdb on the computer. One may also not update the TZ > variable upon travelling - the system clock will again be more likely > accurate. > > This redundant time offset info can serve as human-readable > indication of absolute time, while the time zone name will indicate > the location. > > 2022-11-12 12:00+07 @!Asia/Singapore > > Org will calculate the internal time for both +07 offset and > Asia/Singapore time zone. If they do not match, Org will issue a > warning. The offset will still be preferred if we have to proceed. > > This can be useful when planning future meetings and sending Org file > with a timestamp to someone else, potentially with obsolete tzdb. I like the way that combining these features works, but I do wonder if perh= aps warning when these two bits of information don=E2=80=99t match should be th= e default behaviour, and the `!' used to specify which of them should be prioritised? It also occurs to me that this proposed behaviour might be easier with a si= ngle `@TZINFO' form as I mentioned earlier, e.g. =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 [2022-11-12 12:00 @+07,Asia/Singapore] # warn when mismatch =E2=94=82 [2022-11-12 12:00 @+07,!Asia/Singapore] # use Asia/Singapore over= +07 =E2=94=82 [2022-11-12 12:00 @!+07,Asia/Singapore] # use +07 over Asia/Singa= pore =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 What are you thoughts on this? Thanks again for your work on this, Timothy --=20 Timothy (=E2=80=98tecosaur=E2=80=99/=E2=80=98TEC=E2=80=99), Org mode contri= butor. Learn more about Org mode at . Support Org development at , or support my work at . --=-=-=--