发现有些时间格式真的很乱各种格式都用,整理时间格式为统一处理函数。
下面粘贴一个测试得例子,和函数方法在这里
<?php
header('Content-type:text/html;charset=utf-8');
$datas = array(
'2019.6',
'2018.6.28',
'2017.6.2',
'2016.06.08',
'2016.06',
'2015.10.28',
'2015.10.8',
'2015.10.08',
'2015/10/9',
'2015-10-08',
'2015-10-9',
'2015/10/9',
);
/**
* PHP 批量处理时间日期格式
* @param [type] $timeDatas [ 待处理时间日期集合 ]
* @param [type] $separated [ 日期集合中的分隔类型 ]
* @param [type] $symbol [ 结果选择分隔符 ]
* @return [type] [ 返回统一后的时间格式 ]
*
* demo
* echo getDateDiff(time()-3600);
*/
function setTimeDatas ($timeDatas , $separated = array('.', '/', '-'), $symbol='/'){
if(empty($timeDatas)) {
return ;
}
// 校验数据类型是否为数组
if(is_array($timeDatas)) {
// 遍历数据
foreach ($timeDatas as $key => $value) {
echo $value.'<br>';
// 校验字符串中是否出现当前数组中的分隔符
foreach($separated as $k => $v) {
// 字符串查找是否含有分隔符存在
$find = strstr($value, $v);
if (!empty($find)) {
// 统一数据格式,替换数据中的 . 为 /
$value = str_replace($v, '/', $value);
}
}
// 获取 / 出现次数
$findNum = substr_count($value, '/');
// 出现次数小于 2 将日期格式补全 当月 1号
if($findNum < 2) {
$value .= '/01';
}
// 将日期格式转为时间戳
$timestamp = strtotime($value);
// 时间戳转为统一格式日期
$date = date('Y'.$symbol.'m'.$symbol.'d', $timestamp);
$newDatas[] = $date;
}
} else {
// 对普通字符串进行分隔符替换
$newDatas = str_replace($separated['0'], '/', $timeDatas);
// 获取 / 出现次数
$findNum = substr_count($newDatas, '/');
// 出现次数小于 2 将日期格式补全 当月 1号
if($findNum < 2) {
$newDatas .= '/01';
}
}
return $newDatas;
}
$newDatas = setTimeDatas($datas, array('.', '/', '-'), '/');
$strdatas = setTimeDatas('2019-05', array('-'), '/');
echo "<pre>";
echo "原数据:";
echo "<hr>";
var_dump($datas);
echo "新数据:";
echo "<hr>";
var_dump($newDatas);
echo "单个时间:";
echo "<hr>";
var_dump($strdatas);
echo "</pre>";