[systemd-devel] [Question] timezones in timers

Ivan Kurnosov zerkms at zerkms.ru
Sat Sep 9 09:16:31 UTC 2017


Hi,

I've implemented support for timezones in timers (at least I am not sure if
there are some other places that need some changes).

Here is a diff of what I've committed so far:
https://github.com/systemd/systemd/compare/master...zerkms:TIMER_TIMEZONE

In the very bottom in the tests file you may see what is supported and how.
In short:

the IANA timezone name are supported. Basically, any timezone from the
`timedatectl list-timezones` output is supported.

The most basic example of the timer:

2017-09-09 20:42:00 Pacific/Auckland


Implementation takes into account standard/summer time change.

Implementation might be improved further via a small refactoring to remove
the `CalendarSpec::utc` field, since it effectively is not necessary now,
given that one may use `spec->timezone = "UTC";` instead.

I'm looking for your feedback,

thanks.

On 7 September 2017 at 08:12, Ivan Kurnosov <zerkms at zerkms.ru> wrote:

> I'm doing it with the libc and doing it out of the process:
>
> https://github.com/zerkms/systemd/blob/d09815ef6df4705e06bd0b3a276c4c
> bd8630859f/src/basic/calendarspec.c#L902
>
> I believe parsing is portable standard C with libc and time conversion
> will be very similar to that.
>
> On 7 September 2017 at 01:25, Lennart Poettering <lennart at poettering.net>
> wrote:
>
>> On Mi, 06.09.17 13:18, Mantas Mikulėnas (grawity at gmail.com) wrote:
>>
>> > On Wed, Sep 6, 2017 at 12:58 PM, Ivan Kurnosov <zerkms at zerkms.ru>
>> wrote:
>> >
>> > > I've started working on it (as a crazy experiment for myself
>> primarily)
>> > >
>> > > At the moment I added support for timezones (IANA) to the
>> `CalendarSpec`,
>> > > the parser and the formatter.
>> > >
>> > > https://github.com/zerkms/systemd/commit/367325ae7a2c4df2c05
>> > > 13e8bb8e9925aaf24feef
>> > >
>> >
>> > systemd actually used to have code for parsing *tzdata files* (and
>> showing
>> > DST information in timedatectl); you might want to find that in Git.
>>
>> While it did parse that I don't think we should go that route
>> here. When converting local time into unix time and back we really
>> should let the libc deal with that, and not replicate that. it's not
>> pretty to do this in libc, as there's no way to do time calculation in
>> a non-default timezone except by manipulating env vars, but it's
>> doable, as long as we do this out-of-process...
>>
>> Lennart
>>
>> --
>> Lennart Poettering, Red Hat
>>
>
>
>
> --
> With best regards, Ivan Kurnosov
>



-- 
With best regards, Ivan Kurnosov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20170909/7b8d0364/attachment-0001.html>


More information about the systemd-devel mailing list