| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 | 
							- <?php
 
- namespace Aws\Api;
 
- use Aws\Api\Parser\Exception\ParserException;
 
- use DateTime;
 
- use DateTimeZone;
 
- use Exception;
 
- /**
 
-  * DateTime overrides that make DateTime work more seamlessly as a string,
 
-  * with JSON documents, and with JMESPath.
 
-  */
 
- class DateTimeResult extends \DateTime implements \JsonSerializable
 
- {
 
-     /**
 
-      * Create a new DateTimeResult from a unix timestamp.
 
-      * The Unix epoch (or Unix time or POSIX time or Unix
 
-      * timestamp) is the number of seconds that have elapsed since
 
-      * January 1, 1970 (midnight UTC/GMT).
 
-      *
 
-      * @return DateTimeResult
 
-      * @throws Exception
 
-      */
 
-     public static function fromEpoch($unixTimestamp)
 
-     {
 
-         if (!is_numeric($unixTimestamp)) {
 
-             throw new ParserException('Invalid timestamp value passed to DateTimeResult::fromEpoch');
 
-         }
 
-         // PHP 5.5 does not support sub-second precision
 
-         if (\PHP_VERSION_ID < 56000) {
 
-             return new self(gmdate('c', $unixTimestamp));
 
-         }
 
-         $decimalSeparator = isset(localeconv()['decimal_point']) ? localeconv()['decimal_point'] : ".";
 
-         $formatString = "U" . $decimalSeparator . "u";
 
-         $dateTime = DateTime::createFromFormat(
 
-             $formatString,
 
-             sprintf('%0.6f', $unixTimestamp),
 
-             new DateTimeZone('UTC')
 
-         );
 
-         if (false === $dateTime) {
 
-             throw new ParserException('Invalid timestamp value passed to DateTimeResult::fromEpoch');
 
-         }
 
-         return new self(
 
-             $dateTime->format('Y-m-d H:i:s.u'),
 
-             new DateTimeZone('UTC')
 
-         );
 
-     }
 
-     /**
 
-      * @return DateTimeResult
 
-      */
 
-     public static function fromISO8601($iso8601Timestamp)
 
-     {
 
-         if (is_numeric($iso8601Timestamp) || !is_string($iso8601Timestamp)) {
 
-             throw new ParserException('Invalid timestamp value passed to DateTimeResult::fromISO8601');
 
-         }
 
-         return new DateTimeResult($iso8601Timestamp);
 
-     }
 
-     /**
 
-      * Create a new DateTimeResult from an unknown timestamp.
 
-      *
 
-      * @return DateTimeResult
 
-      * @throws Exception
 
-      */
 
-     public static function fromTimestamp($timestamp, $expectedFormat = null)
 
-     {
 
-         if (empty($timestamp)) {
 
-             return self::fromEpoch(0);
 
-         }
 
-         if (!(is_string($timestamp) || is_numeric($timestamp))) {
 
-             throw new ParserException('Invalid timestamp value passed to DateTimeResult::fromTimestamp');
 
-         }
 
-         try {
 
-             if ($expectedFormat == 'iso8601') {
 
-                 try {
 
-                     return self::fromISO8601($timestamp);
 
-                 } catch (Exception $exception) {
 
-                     return self::fromEpoch($timestamp);
 
-                 }
 
-             } else if ($expectedFormat == 'unixTimestamp') {
 
-                 try {
 
-                     return self::fromEpoch($timestamp);
 
-                 } catch (Exception $exception) {
 
-                     return self::fromISO8601($timestamp);
 
-                 }
 
-             } else if (\Aws\is_valid_epoch($timestamp)) {
 
-                 return self::fromEpoch($timestamp);
 
-             }
 
-             return self::fromISO8601($timestamp);
 
-         } catch (Exception $exception) {
 
-             throw new ParserException('Invalid timestamp value passed to DateTimeResult::fromTimestamp');
 
-         }
 
-     }
 
-     /**
 
-      * Serialize the DateTimeResult as an ISO 8601 date string.
 
-      *
 
-      * @return string
 
-      */
 
-     public function __toString()
 
-     {
 
-         return $this->format('c');
 
-     }
 
-     /**
 
-      * Serialize the date as an ISO 8601 date when serializing as JSON.
 
-      *
 
-      * @return string
 
-      */
 
-     #[\ReturnTypeWillChange]
 
-     public function jsonSerialize()
 
-     {
 
-         return (string) $this;
 
-     }
 
- }
 
 
  |