Name
SPVM::Mojo::Date - HTTP date
Description
Mojo::Date class in SPVM implements HTTP date and time functions, based on RFC 7230, RFC 7231 and RFC 3339.
Usage
use Mojo::Date;
use Sys;
# Parse
my $date = Mojo::Date->new("Sun, 06 Nov 1994 08:49:37 GMT");
say $date->epoch;
# Build
my $date = Mojo::Date->new(Sys->time + 60);
say $date->to_string;
Fields
epoch
has epoch : virtual rw double;
Epoch seconds with a fractional part, defaults to the current time.
This is a virtual field. The real value is set to and got from "epoch_sec" and "epoch_nsec" fields.
epoch_sec
has epoch_sec : rw long;
Epoch seconds.
epoch_nsec
has epoch_nsec : rw long;
Epoch nano seconds.
Class Methods
new
static method new : Mojo::Date ($date_value : object of string|Long = undef);
Construct a new Mojo::Date object and "parse" date if necessary.
Examples:
my $date = Mojo::Date->new;
my $date = Mojo::Date->new("Sun Nov 6 08:49:37 1994");
my $date = Mojo::Date->new(Sys->time + 60);
my $date = Mojo::Date->new("784111777.21");
Instance Methods
parse
method parse : void ($date : string);
Parse date.
# Epoch
say Mojo::Date->new("784111777")->epoch;
say Mojo::Date->new("784111777.21")->epoch;
# RFC 822/1123
say Mojo::Date->new("Sun, 06 Nov 1994 08:49:37 GMT")->epoch;
# RFC 850/1036
say Mojo::Date->new("Sunday, 06-Nov-94 08:49:37 GMT")->epoch;
# Ansi C asctime()
say Mojo::Date->new("Sun Nov 6 08:49:37 1994")->epoch;
# RFC 3339
say Mojo::Date->new("1994-11-06T08:49:37Z")->epoch;
say Mojo::Date->new("1994-11-06T08:49:37")->epoch;
say Mojo::Date->new("1994-11-06T08:49:37.21Z")->epoch;
say Mojo::Date->new("1994-11-06T08:49:37+01:00")->epoch;
say Mojo::Date->new("1994-11-06T08:49:37-01:00")->epoch;
to_datetime
method to_datetime : string ();
Render RFC 3339 date and time.
# "1994-11-06T08:49:37Z"
Mojo::Date->new(784111777L)->to_datetime;
# "1994-11-06T08:49:37.21Z"
Mojo::Date->new("784111777.21")->to_datetime;
to_string
method to_string : string ();
Render date suitable for HTTP messages.
# "Sun, 06 Nov 1994 08:49:37 GMT"
Mojo::Date->new(784111777L)->to_string;
See Also
Copyright & License
Copyright (c) 2025 Yuki Kimoto
MIT License