今天要處理存儲在騰訊雲對象存儲的文件,需要先獲取文件時間,比較之後再決定要不要進行 處理,結果調用騰訊雲的接口,發現返回的文件信息的時間信息,是這種’Fri, 10 May 2019 07:48:10 GMT’,這。。。根本比較不了大小啊。
一開始我很疑惑,存這種格式幹什麼,那麼難用,後來意識到,是爲了不同時區的人都可以用這一種格式使用。GMT表示‘格林威治時間’,簡單地說,用這個時間,不同時區的用戶,可以根據這個時間,算出來自己時區的時間。
所以自己寫方法處理這種字符串的GMT時間,要注意轉換成方便處理的時間格式之後,還要加上自己時區的時差,我一開始就忽略了這一點。(中國大多數地方用的時區,應該都是比GMT時間多八個小時)
1、'Fri, 10 May 2019 07:48:10 GMT’的處理
我需要獲取文件的上次修改時間的時間戳形式來與我需要的時間進行比較,我用的辦法就是通過空格截取各個有含義的字符串,再拼接成strtotime() 可以轉換的格式。
附上轉換方法和常量數組的部分:
const MONTH_STRING_TO_NUMBER = [
'Jan' => '01',
'Feb' => '02',
'Mar' => '03',
'Apr' => '04',
'May' => '05',
'Jun' => '06',
'Jul' => '07',
'Aug' => '08',
'Sep' => '09',
'Oct' => '10',
'Nov' => '11',
'Dec' => '12',
];
//$LastModified = 'Fri, 10 May 2019 07:48:10 GMT'
private function getLocalUnixTime($LastModified) {
$cos_time_array = explode(' ', $LastModified);
//得到正常可以轉換時間戳的時間 '2019-05-10 07:48:10'
$data_time = $cos_time_array[3] . '-' . self::MONTH_STRING_TO_NUMBER[$cos_time_array[2]] .
'-' . $cos_time_array[1] . ' ' . $cos_time_array[4];
//轉換時間戳 再加上時差 8小時
$time_unix = strtotime($data_time) + 8 * 3600;
return $time_unix;
}
2、php時間戳轉換
//'2019-05-10 07:48:10' 轉時間戳
$time_unix = strtotime($data_time);
//時間戳轉時間
$time_string = date('Y-m-d h:i:s', $time_unix);
//'2019-05-10 07:48:10'
data()方法的第一個參數,有很多可選的,參考菜鳥教程。