今天中午吃饭的时候,同事拿过来手机,给我看一道题:
把 2019-04-02 10:10:10 转化为2019-04-12;
在做按天统计的时候,经常会遇到相似的问题,所以我不假思索的给出了我的答案:
$date = '2019-04-12 10:10:10';
$date_format = date('Y-m-d',strtotime($date));
echo $date_format; // 2019-04-12
同事问我为什么不用字符串截取,紧接着的是他的淫笑(画面脑补,此处省略);
$date = '2019-04-12 10:10:10';
$date_str = substr($date,0,11);
echo $date_str; // 2019-04-12
如果单就这道题来说,他的处理可以得到正确的结果,但是在项目中,日期的格式可能有多种形式,如:2019-4-02 10:10:10、2019-4-2 10:10:10;也就是说,月或日可能是单位数,很多日历插件获取到的就是这样的数据;如果不对前端传来的数据做处理,数据库存储的是日期型2019-04-02 10:10:10形式,那么在做查询的时候,mysql将会对字符串按位比较,导致错误的查询,导致接口bug;为了sql正确性、接口可用性,在处理日期时,应将其格式化为时间戳,再对其进行格式化.