# BSON::Time - BSON type wrapper for date and time - perldoc - [phpMan]

## NAME
    [BSON::Time](https://www.chedong.com/phpMan.php/perldoc/BSON%3A%3ATime/markdown) - BSON type wrapper for date and time

## VERSION
    version v1.12.2

## SYNOPSIS
        use [BSON::Types](https://www.chedong.com/phpMan.php/perldoc/BSON%3A%3ATypes/markdown) ':all';

        bson_time();        # now
        bson_time( $secs ); # floating point seconds since epoch

## DESCRIPTION
    This module provides a BSON type wrapper for a 64-bit date-time value in the form of
    milliseconds since the Unix epoch (UTC only).

    On a Perl without 64-bit integer support, the value must be a [Math::BigInt](https://www.chedong.com/phpMan.php/perldoc/Math%3A%3ABigInt/markdown) object.

## ATTRIBUTES
  value
    A integer representing milliseconds since the Unix epoch. The default is 0.

## METHODS
  epoch
    Returns the number of seconds since the epoch (i.e. a floating-point value).

  as_iso8601
    Returns the "value" as an ISO-8601 formatted string of the form "YYYY-MM-DDThh:mm:ss.sssZ". The
    fractional seconds will be omitted if they are zero.

  as_datetime
    Loads DateTime and returns the "value" as a DateTime object.

  as_datetime_tiny
    Loads [DateTime::Tiny](https://www.chedong.com/phpMan.php/perldoc/DateTime%3A%3ATiny/markdown) and returns the "value" as a [DateTime::Tiny](https://www.chedong.com/phpMan.php/perldoc/DateTime%3A%3ATiny/markdown) object.

  as_mango_time
    Loads [Mango::BSON::Time](https://www.chedong.com/phpMan.php/perldoc/Mango%3A%3ABSON%3A%3ATime/markdown) and returns the "value" as a [Mango::BSON::Time](https://www.chedong.com/phpMan.php/perldoc/Mango%3A%3ABSON%3A%3ATime/markdown) object.

  as_time_moment
    Loads [Time::Moment](https://www.chedong.com/phpMan.php/perldoc/Time%3A%3AMoment/markdown) and returns the "value" as a [Time::Moment](https://www.chedong.com/phpMan.php/perldoc/Time%3A%3AMoment/markdown) object.

  TO_JSON
    Returns a string formatted by "as_iso8601".

    If the "BSON_EXTJSON" option is true, it will instead be compatible with MongoDB's extended JSON
    <<https://github.com/mongodb/specifications/blob/master/source/extended-json.rst>> format, which
    represents it as a document as follows:

    If the "BSON_EXTJSON" environment variable is true and the "BSON_EXTJSON_RELAXED" environment
    variable is false, returns a hashref compatible with MongoDB's extended JSON
    <<https://github.com/mongodb/specifications/blob/master/source/extended-json.rst>> format, which
    represents it as a document as follows:

        {"$date" : { "$numberLong": "22337203685477580" } }

    If the "BSON_EXTJSON" and "BSON_EXTJSON_RELAXED" environment variables are both true, then it
    will return a hashref with an ISO-8601 string for dates after the Unix epoch and before the year
    10,000 and a $numberLong style value otherwise.

        {"$date" : "2012-12-24T12:15:30.500Z"}
        {"$date" : { "$numberLong": "-10000000" } }

## OVERLOADING
    Both numification ("0+") and stringification ("") are overloaded to return the result of
    "epoch". Numeric comparison and string comparison are overloaded based on those and fallback
    overloading is enabled.

## AUTHORS
    *   David Golden <<david@mongodb.com>>

    *   Stefan G. <<minimalist@lavabit.com>>

## COPYRIGHT AND LICENSE
    This software is Copyright (c) 2020 by Stefan G. and MongoDB, Inc.

    This is free software, licensed under:

      The Apache License, Version 2.0, January 2004

