NAME

DateTimeX::Moment - EXPERIMENTAL DateTime like interface for Time::Moment

SYNOPSIS

use DateTimeX::Moment;

$dt = DateTimeX::Moment->new(
    year       => 1964,
    month      => 10,
    day        => 16,
    hour       => 16,
    minute     => 12,
    second     => 47,
    nanosecond => 500000000,
    time_zone  => 'Asia/Taipei',
);

$dt = DateTimeX::Moment->from_epoch( epoch => $epoch );
$dt = DateTimeX::Moment->now; # same as ( epoch => time() )

$year   = $dt->year;
$month  = $dt->month;          # 1-12

$day    = $dt->day;            # 1-31

$dow    = $dt->day_of_week;    # 1-7 (Monday is 1)

$hour   = $dt->hour;           # 0-23
$minute = $dt->minute;         # 0-59

$second = $dt->second;         # 0-61 (leap seconds!)

$doy    = $dt->day_of_year;    # 1-366 (leap years)

$doq    = $dt->day_of_quarter; # 1..

$qtr    = $dt->quarter;        # 1-4

# all of the start-at-1 methods above have corresponding start-at-0
# methods, such as $dt->day_of_month_0, $dt->month_0 and so on

$ymd    = $dt->ymd;           # 2002-12-06
$ymd    = $dt->ymd('/');      # 2002/12/06

$mdy    = $dt->mdy;           # 12-06-2002
$mdy    = $dt->mdy('/');      # 12/06/2002

$dmy    = $dt->dmy;           # 06-12-2002
$dmy    = $dt->dmy('/');      # 06/12/2002

$hms    = $dt->hms;           # 14:02:29
$hms    = $dt->hms('!');      # 14!02!29

$is_leap  = $dt->is_leap_year;

# these are localizable, see Locales section
$month_name  = $dt->month_name; # January, February, ...
$month_abbr  = $dt->month_abbr; # Jan, Feb, ...
$day_name    = $dt->day_name;   # Monday, Tuesday, ...
$day_abbr    = $dt->day_abbr;   # Mon, Tue, ...

# May not work for all possible datetime, see the docs on this
# method for more details.
$epoch_time  = $dt->epoch;

$rhs = $dt + $duration_object;

$dt3 = $dt - $duration_object;

$duration_object = $dt - $rhs;

$dt->set( year => 1882 );

$dt->set_time_zone( 'America/Chicago' );

$dt->set_formatter( $formatter );

BENCHMARK

author/benchmark.pl:

new()
Benchmark: timing 100000 iterations of datetime, moment...
  datetime:  4 wallclock secs ( 4.06 usr +  0.01 sys =  4.07 CPU) @ 24570.02/s (n=100000)
    moment:  1 wallclock secs ( 0.62 usr +  0.01 sys =  0.63 CPU) @ 158730.16/s (n=100000)
             Rate datetime   moment
datetime  24570/s       --     -85%
moment   158730/s     546%       --
----------------------------------------
now()
Benchmark: timing 100000 iterations of datetime, moment...
  datetime:  4 wallclock secs ( 4.38 usr +  0.01 sys =  4.39 CPU) @ 22779.04/s (n=100000)
    moment:  1 wallclock secs ( 0.59 usr +  0.00 sys =  0.59 CPU) @ 169491.53/s (n=100000)
             Rate datetime   moment
datetime  22779/s       --     -87%
moment   169492/s     644%       --
----------------------------------------
from_epoch()
Benchmark: timing 100000 iterations of datetime, moment...
  datetime:  4 wallclock secs ( 4.27 usr +  0.01 sys =  4.28 CPU) @ 23364.49/s (n=100000)
    moment:  1 wallclock secs ( 0.63 usr +  0.00 sys =  0.63 CPU) @ 158730.16/s (n=100000)
             Rate datetime   moment
datetime  23364/s       --     -85%
moment   158730/s     579%       --
----------------------------------------
calculate()
Benchmark: timing 100000 iterations of datetime, moment...
  datetime: 20 wallclock secs (20.30 usr +  0.04 sys = 20.34 CPU) @ 4916.42/s (n=100000)
    moment:  1 wallclock secs ( 1.07 usr +  0.00 sys =  1.07 CPU) @ 93457.94/s (n=100000)
            Rate datetime   moment
datetime  4916/s       --     -95%
moment   93458/s    1801%       --
----------------------------------------

DESCRIPTION

TODO: write it

METHODS

TODO: write it

LICENSE

Copyright (C) karupanerura.

This is free software, licensed under: The Artistic License 2.0 (GPL Compatible)

AUTHOR

karupanerura <karupa@cpan.org>