Public bug reported:

glibc version 2.28-0ubuntu1


If timezone is set to Dublin, strptime returns one hour less than it should.  
Timezone set to London works fine, but Dublin and London are in the same time 
zone.  DST is not active.

mark@sotera:~/build-glibc$ TZ='Europe/Dublin'; ./test 
t(orig)=1551972563
s=2019-03-07T15:29:23GMT+0000

calling strptime
t(new)=1551968963
s=2019-03-07T14:29:23

mark@sotera:~/build-glibc$ TZ='Europe/London'; ./test 
t(orig)=1551972570
s=2019-03-07T15:29:30GMT+0000
calling strptime
t(new)=1551972570
s=2019-03-07T15:29:30

where test.c is the following:

#define _XOPEN_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <time.h>

int main (void)
{
    struct tm tms;
    time_t t;
    char s[100];
    int sec;

    t = time (NULL);
    printf ("t(orig)=%d\n", (int) t);

    gmtime_r (&t, &tms);
    strftime (s, 90, "%Y-%m-%dT%H:%M:%S%Z%z", &tms);
    printf ("s=%s\n", s);

    memset (&tms, 0, sizeof (struct tm));
    printf("calling strptime\n");
    char *unproc = strptime (s, "%Y-%m-%dT%H:%M:%S%Z", &tms);
    t = mktime(&tms);
    printf ("t(new)=%d\n", (int) t);

    gmtime_r (&t, &tms);
    strftime (s, 90, "%Y-%m-%dT%H:%M:%S", &tms);
    printf ("s=%s\n", s);

    return 0;
}

** Affects: glibc (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: glibc strptime

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1819035

Title:
  strptime loses one hour if TZ set to Dublin

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1819035/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to