The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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>