NAME

MojoX::Date::Local - Mojo::Date, but in my timezone and with custom formats

SYNOPSIS

  use MojoX::Date::Local;

  my $now = MojoX::Date::Local->new;
  say $now->to_datetime;        # => 2020-05-27T17:39:43-08:00
  say $now->format;             # => Wed, 27 May 2020 17:39:43 PDT
  say $now->format('%H:%M:%S'); # => 17:39:43

DESCRIPTION

This module lets you use Mojo::Date's concise date / time functionality within the context of your own time zone. That's mainly useful when logging to the console with a custom Mojo::Log format:

  use Mojo::Log;
  use MojoX::Date::Local;

  my $logger = Mojo::Log->new;

  $logger->format(
    sub ($time, $level, @lines) {
      my ($time, $level, @lines) = @_;
      my $timestamp = MojoX::Date::Local->new($time)->to_datetime;
      my $prefix    = "[$timestamp] [$level]";
      my $message   = join "\n", @lines, "";
      return "$prefix $message";
    }
  );

METHODS

A MojoX::Date::Local provides Mojo::Date's methods, with a couple changes.

to_datetime

Render local date+time in RFC 3339 format, with timezone offset. If the time has fractional seconds, those will be included in the output.

format($fmt)

Return presumably locale-appropriate formatting of local date+time per POSIX::strftime's formatting rules. '%a, %d %b %Y %H:%M:%S %Z' is used if $fmt string is not provided. This produces a string similar to but not quite compliant with RFC 7231, which makes no allowances for localization. But it's still nice to have when displaying dates informally.

SEE ALSO

Mojolicious, Mojo::Date, POSIX

LICENSE

Copyright (C) Brian Wisti.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

AUTHOR

Brian Wisti <brianwisti@pobox.com>