public static function getDateTime($value) : DateTimeInterface
    {
        $datetime  = false;
        $exception = null;

        if ($value instanceof DateTimeInterface) {
            return $value;
        } elseif ($value instanceof UTCDateTime) {
            $datetime = $value->toDateTime();
            $datetime->setTimezone(new DateTimeZone(date_default_timezone_get()));
        } elseif (is_numeric($value)) {
            $value         = (float) $value;
            $seconds       = (int) $value;
            $microseconds  = abs(round($value - $seconds, 6));
            $microseconds *= 1000000;

            $datetime = static::craftDateTime($seconds, (int) $microseconds);
        } elseif (is_string($value)) {
            try {
                $datetime = new DateTime($value);
            } catch (Throwable $e) {
                $exception = $e;
            }
        }

        if ($datetime === false) {
            throw new InvalidArgumentException(sprintf('Could not convert %s to a date value', is_scalar($value) ? '"' . $value . '"' : gettype($value)), 0, $exception);
        }

        return $datetime;
    }
public static function getDateTime($value) : DateTimeInterface
    {
        $datetime  = false;
        $exception = null;

        if ($value instanceof DateTimeInterface) {
            return $value;
        } elseif ($value instanceof UTCDateTime) {
            $datetime = $value->toDateTime();
            $datetime->setTimezone(new DateTimeZone(date_default_timezone_get()));
        } elseif (is_numeric($value)) {
            $value         = (float) $value;
            $seconds       = (int) $value;
            $microseconds  = abs(round($value - $seconds, 6));
            $microseconds *= 1000000;

            $datetime = static::craftDateTime($seconds, (int) $microseconds);
        } elseif (is_string($value)) {
            try {
                $datetime = new DateTime($value);
            } catch (Throwable $e) {
                $exception = $e;
            }
        }

        if ($datetime === false) {
            throw new InvalidArgumentException(sprintf('Could not convert %s to a date value', is_scalar($value) ? '"' . $value . '"' : gettype($value)), 0, $exception);
        }

        return $datetime;
    }
public static function getDateTime ( $ value ) : DateTimeInterface { $ datetime = false ; $ exception = null ; if ( $ value instanceof DateTimeInterface ) { return $ value ; } elseif ( $ value instanceof UTCDateTime ) { $ datetime = $ value -> toDateTime ( ) ; $ datetime -> setTimezone ( new DateTimeZone ( date_default_timezone_get ( ) ) ) ; } elseif ( is_numeric ( $ value ) ) { $ value = ( float ) $ value ; $ seconds = ( int ) $ value ; $ microseconds = abs ( round ( $ value - $ seconds , 6 ) ) ; $ microseconds *= 1000000 ; $ datetime = static :: craftDateTime ( $ seconds , ( int ) $ microseconds ) ; } elseif ( is_string ( $ value ) ) { try { $ datetime = new DateTime ( $ value ) ; } catch ( Throwable $ e ) { $ exception = $ e ; } } if ( $ datetime === false ) { throw new InvalidArgumentException ( sprintf ( 'Could not convert %s to a date value' , is_scalar ( $ value ) ? '"' . $ value . '"' : gettype ( $ value ) ) , 0 , $ exception ) ; } return $ datetime ; }
Converts a value to a DateTime.
Supports microseconds

@param  mixed $value \DateTimeInterface|\MongoDB\BSON\UTCDateTime|int|float

@throws InvalidArgumentException If $value is invalid.
Converts a value to a DateTime . Supports microseconds