Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion lib/Date/Language.pm
Original file line number Diff line number Diff line change
Expand Up @@ -74,13 +74,14 @@ sub format_Z {
sub str2time
{
my $me = shift;
my $now = @_ > 2 ? splice(@_, 2, 1) : time;
my @t = $me->strptime(@_);

return undef
unless @t;

my($ss,$mm,$hh,$day,$month,$year,$zone) = @t;
my @lt = localtime(time);
my @lt = localtime($now);

$hh ||= 0;
$mm ||= 0;
Expand Down
41 changes: 41 additions & 0 deletions t/lang-str2time.t
Original file line number Diff line number Diff line change
Expand Up @@ -105,4 +105,45 @@ my $lang = Date::Language->new('English');
is($parsed, $t, "German round-trip ctime/str2time");
}

# --- EPOCH parameter: Date::Language should match Date::Parse ---

{
# Use a fixed reference time: July 1 2024 00:00:00 UTC
my $ref = 1719792000;

# "25 Dec" relative to July 2024 → Dec 2023 (most recent past)
my $dp = str2time("25 Dec", undef, $ref);
my $dl = $lang->str2time("25 Dec", undef, $ref);

ok(defined $dp, "Date::Parse parses '25 Dec' with EPOCH ref");
ok(defined $dl, "Date::Language parses '25 Dec' with EPOCH ref");

if (defined $dp && defined $dl) {
my @dp_t = gmtime($dp);
my @dl_t = gmtime($dl);
is($dl_t[5] + 1900, $dp_t[5] + 1900,
"EPOCH param: '25 Dec' ref=Jul-2024 → year matches Date::Parse ("
. ($dp_t[5] + 1900) . ")");
is($dl_t[5] + 1900, 2023,
"EPOCH param: '25 Dec' ref=Jul-2024 → year 2023 (most recent past)");
}

# "15 Mar" relative to July 2024 → Mar 2024 (already past this year)
my $dp2 = str2time("15 Mar", undef, $ref);
my $dl2 = $lang->str2time("15 Mar", undef, $ref);

ok(defined $dp2, "Date::Parse parses '15 Mar' with EPOCH ref");
ok(defined $dl2, "Date::Language parses '15 Mar' with EPOCH ref");

if (defined $dp2 && defined $dl2) {
my @dp_t = gmtime($dp2);
my @dl_t = gmtime($dl2);
is($dl_t[5] + 1900, $dp_t[5] + 1900,
"EPOCH param: '15 Mar' ref=Jul-2024 → year matches Date::Parse ("
. ($dp_t[5] + 1900) . ")");
is($dl_t[5] + 1900, 2024,
"EPOCH param: '15 Mar' ref=Jul-2024 → year 2024 (past this year)");
}
}

done_testing;
Loading