Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/grinnz/time-moment-role-timezone
Time::Moment::Role::TimeZone - Adjust Time::Moment with time zone objects
https://github.com/grinnz/time-moment-role-timezone
Last synced: 5 days ago
JSON representation
Time::Moment::Role::TimeZone - Adjust Time::Moment with time zone objects
- Host: GitHub
- URL: https://github.com/grinnz/time-moment-role-timezone
- Owner: Grinnz
- License: other
- Created: 2018-03-24T19:47:34.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2020-02-07T18:03:45.000Z (almost 5 years ago)
- Last Synced: 2024-11-13T05:14:56.333Z (about 2 months ago)
- Language: Perl
- Homepage: https://metacpan.org/pod/Time::Moment::Role::TimeZone
- Size: 43.9 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.pod
- Changelog: Changes
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
=pod
=head1 NAME
Time::Moment::Role::TimeZone - Adjust Time::Moment with time zone objects
=head1 SYNOPSIS
use Time::Moment;
use With::Roles;
use DateTime::TimeZone;my $tz = DateTime::TimeZone->new(name => 'America/New_York');
my $tm = Time::Moment->with::roles('+TimeZone')->from_epoch(1000212360)->with_time_zone_offset_same_instant($tz);use DateTime::TimeZone::Olson 'olson_tz';
my $tz = olson_tz('Europe/Oslo');
my $tm = Time::Moment->new(year => 2012, month => 3, day => 4, hour => 13, minute => 7, second => 42);
$tm = $tm->with::roles('+TimeZone')->with_time_zone_offset_same_local($tz);my $class = Time::Moment->with::roles('+TimeZone');
my $tm = $class->from_epoch(1522095272)->with_system_offset_same_instant;my $tm = $class->new_from_string('2009-05-02T12:15:30Z')->with_system_offset_same_local;
=head1 DESCRIPTION
This role provides convenience methods to return a new L object
adjusted according to a L/
L<::Tzfile|DateTime::TimeZone::Tzfile>-compatible time zone object, as in
L. See L"CAVEATS"> regarding usage with date math.=head1 METHODS
=head2 with_time_zone_offset_same_instant
my $same_instant = $tm->with_time_zone_offset_same_instant($tz);
Returns a L of the same instant, but at an offset from UTC
according to the given time zone object at that instant.=head2 with_time_zone_offset_same_local
my $same_local = $tm->with_time_zone_offset_same_local($tz);
Returns a L of the same local time, with an offset from UTC
according to the given time zone object at that local time.If the local time of the L object is ambiguous in the given time
zone (such as when Daylight Savings Time ends), the time zone object will
usually use the earliest time. If the local time does not exist (such as when
Daylight Savings Time starts), the time zone object will usually throw an
exception.=head2 with_system_offset_same_instant
my $same_instant = $tm->with_system_offset_same_instant;
As in L"with_time_zone_offset_same_instant">, but using the system local time
zone via L.=head2 with_system_offset_same_local
my $same_local = $tm->with_system_offset_same_local;
As in L"with_time_zone_offset_same_local">, but using the system local time
zone via L.If the local time of the L object is ambiguous in the system
local time zone (such as when Daylight Savings Time ends), L will
use the earliest time. If the local time does not exist (such as when Daylight
Savings Time starts), L will use the time one hour later.=head1 CAVEATS
L does not store a time zone; these methods only set the offset
and local time for the instantaneous moment represented by the object. After
doing date math with the object, new times may need to be corrected, based on
whether the date math was intended to be done relative to the absolute or local
time.my $tm = $class->now_utc->with_time_zone_offset_same_instant($tz); # now in $tz
my $next_day = $tm->plus_days(1)->with_time_zone_offset_same_local($tz); # 1 day from now in $tz
my $24h_later = $tm->plus_days(1)->with_time_zone_offset_same_instant($tz); # 24 hours from now in $tzmy $tm = $class->now; # now in system local time
my $next_day = $tm->plus_days(1)->with_system_offset_same_local; # 1 day from now in system local time
my $24h_later = $tm->plus_days(1)->with_system_offset_same_instant; # 24 hours from now in system local timeNote that L"with_time_zone_offset_same_local"> may throw an exception here if
the new local time does not exist in that time zone (e.g. between 2 and 3 AM at
the start of Daylight Savings Time).=head1 BUGS
Report any issues on the public bugtracker.
=head1 AUTHOR
Dan Book
=head1 CONTRIBUTORS
=over
=item Christian Hansen (chansen)
=back
=head1 COPYRIGHT AND LICENSE
This software is Copyright (c) 2018 by Dan Book.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)
=head1 SEE ALSO
L, L, L
=cut