����JFIF���������
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
use strict;
use warnings;
# GH#10 / RT#80649: Wrong timezone abbreviation during DST fall-back
#
# format_Z was calling timelocal() to reconstruct the original epoch from
# broken-down time. During the "fall-back" hour, the broken-down time is
# ambiguous (1:xx AM occurs twice: once in PDT and once in PST). timelocal()
# resolves the ambiguity to the first occurrence (PDT), returning the PDT
# epoch (offset -25200). tz_name(-25200, dst=0) then finds -25200 in %zoneOff
# as "mst" (Mountain Standard), yielding MST instead of PST.
#
# Fix: use the original epoch stored in $_[0]->[9] instead of timelocal().
#
# The TZ is set in a BEGIN block so the C library timezone is initialised
# before any module loads and before any localtime/tzset calls happen.
# Using a runtime $ENV{TZ} assignment after `use` statements is unreliable
# because `use` executes at compile time, and on some platforms restoring a
# `local $ENV{TZ}` automatically resets the C library timezone, which a later
# POSIX::tzset() call may not fully undo.
BEGIN {
$ENV{TZ} = 'America/Los_Angeles';
require POSIX;
eval { POSIX::tzset() };
}
use POSIX qw();
use Test::More;
use Date::Format qw(time2str);
# Skip the whole file if the platform does not support IANA timezone names.
# Use epoch 1352019262 (2012-11-04 01:04:22 PDT): DST=1 in America/Los_Angeles
# but DST=0 in UTC, so this check actually distinguishes the two and won't
# produce a false-positive on a UTC-only system.
my $has_la_tz = eval {
my @lt = localtime(1352019262); # 2012-11-04 01:04:22 PDT (before fall-back)
$lt[8] == 1; # Expect DST flag = 1 in PDT
};
plan( skip_all => "system does not support America/Los_Angeles timezone" )
unless $has_la_tz;
plan tests => 3;
# 2012-11-04 01:25:05 PST — the second occurrence of 01:xx AM after fall-back
# This is the timestamp from the original bug report that returned MST.
is( time2str("%Z", 1352021105), "PST",
"GH#10/RT#80649: repeated hour after fall-back formats as PST, not MST" );
# 2012-11-04 01:54:22 PDT — before the fall-back (first occurrence of 01:xx AM)
is( time2str("%Z", 1352019262), "PDT",
"GH#10/RT#80649: pre-fall-back timestamp formats as PDT" );
# 2012-11-04 02:25:05 PST — after the repeated hour, clearly PST
is( time2str("%Z", 1352024705), "PST",
"GH#10/RT#80649: post-repeated-hour timestamp formats as PST" );
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| 00-report-prereqs.dd | File | 1.47 KB | 0644 |
|
| 00-report-prereqs.t | File | 5.88 KB | 0644 |
|
| cpanrt-format.t | File | 599 B | 0644 |
|
| cpanrt-language.t | File | 466 B | 0644 |
|
| cpanrt-overflow.t | File | 808 B | 0644 |
|
| cpanrt-parse.t | File | 5.07 KB | 0644 |
|
| cpanrt-zone.t | File | 4.03 KB | 0644 |
|
| date.t | File | 5 KB | 0644 |
|
| edge-cases.t | File | 8.93 KB | 0644 |
|
| format.t | File | 3.26 KB | 0644 |
|
| getdate.t | File | 7.62 KB | 0644 |
|
| gh10.t | File | 2.34 KB | 0644 |
|
| gh12.t | File | 1.13 KB | 0644 |
|
| lang-data.t | File | 10.29 KB | 0644 |
|
| lang-encoding.t | File | 1.19 KB | 0644 |
|
| lang.t | File | 479 B | 0644 |
|
| msk-tz.t | File | 594 B | 0644 |
|
| pod-valid.t | File | 436 B | 0644 |
|
| rt-format.t | File | 340 B | 0644 |
|
| rt-parse.t | File | 1.32 KB | 0644 |
|
| rt-timezone.t | File | 2.78 KB | 0644 |
|
| rt106105.t | File | 1.14 KB | 0644 |
|
| rt52387.t | File | 782 B | 0644 |
|
| rt57800.t | File | 1.29 KB | 0644 |
|
| str2time-epoch.t | File | 1.28 KB | 0644 |
|
| strptime-iso8601.t | File | 2.75 KB | 0644 |
|
| time2str-lang.t | File | 886 B | 0644 |
|
| tz-lang.t | File | 1.52 KB | 0644 |
|
| zone.t | File | 3.75 KB | 0644 |
|