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

NAME

is_epoch - Guess if the given string could be an epoch time.

NAME

is_epoch - guess if the given number is an epoch

SYNOPSIS

is_epoch [OPTIONS] number [number ...]

EXAMPLES

Default is year 0001 to 9999, which is probably too much output. To get less, change the min and max values:

    $ is_epoch 1234567890 --min 2007 --max 2017
    2016-12-22T00:22:36Z    (1234567890, decimal, dos)
    2009-02-13T23:31:30Z    (1234567890, decimal, unix)
    2007-03-16T23:31:30Z    (1234567890, decimal, google_calendar)

You can also ask for JSON output instead.

    $ is_epoch 1234567890 --min 2007 --max 2017 --output=as_json
    {"1234567890":{"decimal":{"dos":"2016-12-22T00:22:36Z","unix":"2009-02-13T23:31:30Z","google_calendar":"2007-03-16T23:31:30Z"}}}

To make it more readable, just pipe it json_xs or or jq whatever your favorite JSON prettifier is.

    $ is_epoch 1234567890 --min 2007 --max 2017 --output=as_json | json_xs
    {
       "1234567890" : {
          "decimal" : {
             "unix" : "2009-02-13T23:31:30Z",
             "dos" : "2016-12-22T00:22:36Z",
             "google_calendar" : "2007-03-16T23:31:30Z"
          }
       }
    }

Most things are looking for a decimal or hexadecimal string, but you can also put a whole UUID in and it will grab the parts that make the date-time.

    $ is_epoch 33c41a44-6cea-11e7-907b-a6006ad3dba0
    2017-07-20T01:24:40.472634Z (33c41a44-6cea-11e7-907b-a6006ad3dba0, uuid_v1, uuid_v1)

That's a version 1 UUID. Now there are more UUIDs with timestamps in them (https://uuid6.github.io/uuid6-ietf-draft/).

Version 6 UUIDs also contain a uuid_v1 timestamp, but the bits are in a different order

    $ is_epoch 1e76cea3-3c41-6a44-907b-a6006ad3dba0
    2017-07-20T01:24:40.472634Z (1e76cea3-3c41-6a44-907b-a6006ad3dba0, uuid_v6, uuid_v1)

Version 7 UUIDs contain a java timestamp (Unix time in milliseconds)

    $ is_epoch 017F22E2-79B0-7CC3-98C4-DC0C0C07398F
    2022-02-22T19:22:22Z        (017F22E2-79B0-7CC3-98C4-DC0C0C07398F, uuid_v7, java)

ULIDs (https://github.com/ulid/spec) also have java timestamps in them

    $ is_epoch 01FWHE4YDGFK1SHH6W1G60EECF
    2022-02-22T19:22:22Z        (01FWHE4YDGFK1SHH6W1G60EECF, ulid, java)

OPTIONS

--debug

Prints extra messages.

--help

Prints a brief help message and exits.

--man

Prints the manual page and exits.

--max_date=STRING

Maximum date to print out. Default is 9999-12-31T23:59:59Z. It's just a string compare, so you can include as little or as much of an ISO-8601 date as you want (e.g., --max_date=2017).

--min_date=STRING

Minimum date to print out. Default is 0001-01-01T00:00:00Z. It's just a string compare, so you can include as little or as much of an ISO-8601 date as you want (e.g., --min_date=2017).

--output=STRING

Output format (as_string or as_json). Default as_string.

--verbose

Prints results in more detail.

DESCRIPTION

is_epoch will guess if any of the conversions from Time::Moment::Epoch gives a reasonable date for the given numbers.

VERSION

version 1.004001

AUTHOR

Tim Heaney <heaney@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2017 by Tim Heaney.

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