From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bastien Guerry Subject: [Accepted] Add explicit time zone to datetime exported to ical. Date: Sat, 12 Feb 2011 21:15:22 +0100 (CET) Message-ID: <20110212201522.A53E48860@myhost.localdomain> References: <87lj3ixljr.dlv@debian.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from [140.186.70.92] (port=35905 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PoLsF-0000nI-2B for emacs-orgmode@gnu.org; Sat, 12 Feb 2011 15:15:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PoLsD-0008JF-M2 for emacs-orgmode@gnu.org; Sat, 12 Feb 2011 15:15:18 -0500 Received: from mail-fx0-f41.google.com ([209.85.161.41]:55673) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PoLsD-0008JB-Gx for emacs-orgmode@gnu.org; Sat, 12 Feb 2011 15:15:17 -0500 Received: by fxm12 with SMTP id 12so4096856fxm.0 for ; Sat, 12 Feb 2011 12:15:16 -0800 (PST) List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Patch 502 (http://patchwork.newartisans.com/patch/502/) is now "Accepted". Maintainer comment: none This relates to the following submission: http://mid.gmane.org/%3C87lj3ixljr.dlv%40debian.org%3E Here is the original message containing the patch: > Content-Type: text/plain; charset="utf-8" > MIME-Version: 1.0 > Content-Transfer-Encoding: 7bit > Subject: [Orgmode] Add explicit time zone to datetime exported to ical. > Date: Wed, 22 Dec 2010 13:24:08 -0000 > From: =?utf-8?q?R=C3=A9mi_Vanicat_=3Cvanicat=40debian=2Eorg=3E?= > X-Patchwork-Id: 502 > Message-Id: <87lj3ixljr.dlv@debian.org> > To: emacs-orgmode@gnu.org > > When exporting to ical, using localtime is incompatible with some > software, using explicit universal time may failed with daylight > saving time, so we need another possibility, that is localtime with > explicit timezone. > > --- > lisp/org-icalendar.el | 30 +++++++++++++++++++++--------- > 1 files changed, 21 insertions(+), 9 deletions(-) > > diff --git a/lisp/org-icalendar.el b/lisp/org-icalendar.el > index d4034fe..1dfd3ed 100644 > --- a/lisp/org-icalendar.el > +++ b/lisp/org-icalendar.el > @@ -194,12 +194,25 @@ When nil of the empty string, use the abbreviation retrieved from Emacs." > (const :tag "Unspecified" nil) > (string :tag "Time zone"))) > > -(defcustom org-icalendar-use-UTC-date-time () > - "Non-nil force the use of the universal time for iCalendar DATE-TIME. > -The iCalendar DATE-TIME can be expressed with local time or universal Time, > -universal time could be more compatible with some external tools." > +(defcustom org-icalendar-date-time-format ":%Y%m%dT%H%M%S" > + "format-string for exporting icalendar DATE-TIME. > +See `format-time-string' for a full documentation. The only > +difference is that `org-icalendar-timezone' is used for %Z > + > +Interesting value are: > + - \":%Y%m%dT%H%M%S\" for local time > + - \";TZID=%Z:%Y%m%dT%H%M%S\" for local time with explicit timezone > + - \":%Y%m%dT%H%M%SZ\" for time expressed in Universal Time" > + > :group 'org-export-icalendar > - :type 'boolean) > + :type '(choice > + (const :tag "Local time" ":%Y%m%dT%H%M%S") > + (const :tag "Explicit local time" ";TZID=%Z:%Y%m%dT%H%M%S") > + (const :tag "Universal time" ":%Y%m%dT%H%M%SZ") > + (string :tag "Explicit format"))) > + > +(defun org-icalendar-use-UTC-date-timep () > + (char-equal (elt org-icalendar-date-time-format (1- (length org-icalendar-date-time-format))) ?Z)) > > ;;; iCalendar export > > @@ -641,12 +654,11 @@ a time), or the day by one (if it does not contain a time)." > (setq h (+ 2 h))) > (setq d (1+ d)))) > (setq time (encode-time s mi h d m y))) > - (setq fmt (if have-time (if org-icalendar-use-UTC-date-time > - ":%Y%m%dT%H%M%SZ" > - ":%Y%m%dT%H%M%S") > + (setq fmt (if have-time > + (replace-regexp-in-string "%Z" org-icalendar-timezone org-icalendar-date-time-format) > ";VALUE=DATE:%Y%m%d")) > (concat keyword (format-time-string fmt time > - (and org-icalendar-use-UTC-date-time > + (and (org-icalendar-use-UTC-date-timep) > have-time)))))) > > (provide 'org-icalendar) >