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