Return true if successful. */
static bool
-batch_convert (const char *input_filename, const char *format, timezone_t tz)
+batch_convert (const char *input_filename, const char *format,
+ timezone_t tz, char const *tzstring)
{
bool ok;
FILE *in_stream;
break;
}
- if (! parse_datetime2 (&when, line, NULL, parse_datetime_flags))
+ if (! parse_datetime2 (&when, line, NULL,
+ parse_datetime_flags, tz, tzstring))
{
if (line[line_length - 1] == '\n')
line[line_length - 1] = '\0';
}
}
- timezone_t tz = tzalloc (getenv ("TZ"));
+ char const *tzstring = getenv ("TZ");
+ timezone_t tz = tzalloc (tzstring);
if (batch_file != NULL)
- ok = batch_convert (batch_file, format, tz);
+ ok = batch_convert (batch_file, format, tz, tzstring);
else
{
bool valid_date = true;
if (set_datestr)
datestr = set_datestr;
valid_date = parse_datetime2 (&when, datestr, NULL,
- parse_datetime_flags);
+ parse_datetime_flags,
+ tz, tzstring);
}
}
date: '(Y-M-D) 1990-12-14 00:00:00 TZ=+09:00' = 661100400 epoch-seconds
date: after time adjustment (+0 hours, -90 minutes, +0 seconds, +0 ns),
date: new time = 661095000 epoch-seconds
-date: output timezone: -06:00 (set from TZ="America/Belize" environment value)
+date: output timezone: +09:00 (set from TZ="Asia/Tokyo" environment value)
date: final: 661095000.000000000 (epoch-seconds)
date: final: (Y-M-D) 1990-12-13 13:30:00 (UTC0)
-date: final: (Y-M-D) 1990-12-13 07:30:00 (output timezone TZ=-06:00)
+date: final: (Y-M-D) 1990-12-13 22:30:00 (output timezone TZ=+09:00)
Thu Dec 13 07:30:00 CST 1990
EOF
{ERR => "date: invalid date 'TZ=\"\"\"'\n"},
{EXIT => 1},
],
+
+ # https://bugs.debian.org/851934#10
+ ['cross-TZ-mishandled', "-d 'TZ=\"EST5\" 1970-01-01 00:00'",
+ {ENV => 'TZ=PST8'},
+ {OUT => 'Wed Dec 31 21:00:00 PST 1969'},
+ ],
);
# Repeat the cross-dst test, using Jan 1, 2005 and every interval from 1..364.