今天要处理存储在腾讯云对象存储的文件,需要先获取文件时间,比较之后再决定要不要进行 处理,结果调用腾讯云的接口,发现返回的文件信息的时间信息,是这种’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()方法的第一个参数,有很多可选的,参考菜鸟教程。