Convert date time from zulu format

From LemonWiki共筆
Jump to navigation Jump to search

Convert date time from Zulu format (ISO 8601) or convert date time to Zulu format

Convert date time from Zulu format[edit]

Convert date time from T Z format (ISO 8601 format[1]; Zulu time format[2]) e.g. 2023-06-01T10:01:45Z or 2023-06-01T22:48:51.660Z

PHP approach[edit]

Coordinated Universal Time (UTC)

echo date('Y-m-d H:i:s', strtotime('2020-05-08T09:59:08Z')) . PHP_EOL;
// returns 2020-05-08 09:59:08

Icon_exclaim.gif The returned result is server timezone dependent if you set the timezone using date_default_timezone_set.

date_default_timezone_set("Asia/Taipei");
echo date('Y-m-d H:i:s', strtotime('2020-05-08T09:59:08Z')) . PHP_EOL;
// returns 2020-05-08 17:59:08 

MySQL approach[edit]

Coordinated Universal Time (UTC)

-- case1: end with decimal & Z
SET @myTime := '2020-05-06T22:48:51.660Z';
SELECT str_to_date(@myTime, '%Y-%m-%dT%H:%i:%s.%fZ');
-- returns 2020-05-06 22:48:51.660000


-- case2: not end with decimal & Z
SET @myTime := '2020-05-08T09:59:08Z';
SELECT str_to_date(@myTime, '%Y-%m-%dT%H:%i:%sZ');
-- returns 2020-05-08 09:59:08

SET @myTime := '2020-05-08T09:59:08Z';
SELECT str_to_date(@myTime, '%Y-%m-%dT%H:%i:%s.%fZ');
-- returns null

Convert date time to Zulu format[edit]

PHP approach[edit]

// 指定時間
$dateTimeString = "2023-04-26 19:01:23";

// 特定時區的 identifier (識別符,例如 UTC+8)
$timeZoneIdentifier = 'Asia/Taipei'; // 'Asia/Taipei' 是 UTC+8 的其中一個時區識別符

// 建立 DateTimeZone 物件,指定時區
$timeZone = new DateTimeZone($timeZoneIdentifier);

// 建立 DateTime 物件,解析日期時間字串,並設置時區
$dateTime = new DateTime($dateTimeString, $timeZone);

// 將 DateTime 物件的時區設置為 UTC
$dateTime->setTimezone(new DateTimeZone('UTC'));

// 格式化日期時間為 Zulu 時間格式並輸出
echo $dateTime->format('Y-m-d\TH:i:s.000\Z');
// 輸出:2023-04-26T11:01:23Z

References[edit]

Further readings[edit]