php时间计算 为什么用24 * 3600 72 * 3600,而不直接用结果数

图片说明

24 * 3600为什么不直接用结果数86400,少一个计算步骤

一小时3600秒,再乘24小时, 那就是一天,一来可以知道比较的单位是秒,二来很清楚的看出来比较的值是一天,如果直接写86400,
你确定你在读这个代码的时候能一眼看出来是什么?
况且,这点计算量,对计算机来说根本不算什么

首先。这种写法不仅速度慢,而且不容易阅读。上面几个答案都是扯淡。72 * 3600,72除以24不心算你能得出来吗?
在我带领的项目里,数字基本都是杜绝的,尤其是这种,你可以叫他们魔法数字(magic number)。
所以你自己的想法不一定是错的,问题就出在你没有给出优化方案:

 <?php

class Time
{
    const SECOND = 1;
    const MINUTE_SECOND = 60;
    const HOUR_MINUTE = 60;
    const HOUR_SECOND = 3600;
    const DAY_SECOND = 86400;
    const WEEK_SECOND = 604800;
    const MONTH_SECOND = 2592000;
    const YEAR_SECOND = 31104000;

    const DAY_HOUR = 24;
    const WEEK_DAY = 7;
    const MONTH_DAY = 30;
    const YEAR_MONTH = 12;
    const YEAR_DAY = 360;
}

建立这样一个字典,所有关于时间都用常量代替,没有人会不小心算错时间,也不需要临时计算。只需要这样使用 Time::MONTH_SECOND
是的,代表一个月。你要两个月再加一周? Time::MONTH_SECOND * 2 + Time::WEEK_SECOND

所以,怎样写出既高效又利于阅读又利于维护的代码,是需要不断积累经验的。加油小伙子。

这样的写法计算速度要慢一些,但是容易阅读,也节省更多的存储空间。

方便程序员一眼看出这是几天,减少阅读难度。

能够确定单位量,程序员更易懂你的代码

可以的,这么做有两个好处.
1.方便阅读
其他程序员在看代码的时候,一眼就能看出这是多长时间了.你要是搞个
长数字,还得算一下,除以3600,比较麻烦.
2.为了效率
你想想,你在每次写一个时间的时候,你还要先算一遍这个数.
心算也行,但是不是挺麻烦的?比如说你拿出了了计算器,算出了这个数,比如 :
两天的时间 : 123*24*3600 = 10627200
嗯,现在算出来了写吧.你在打开你的代码 一个个的敲上去 10627200
这个过程是不是挺麻烦的?
3.为了准确度
就算你使用计算器,也有可能手误的时候,比如多打了个数字.但是呢,由于
数字太大,你也不知道他错了.
再说你手再打上去,也可能有失误啊

只只只能编这么多了

逻辑清楚,给你一个结果你肯定不知道怎么计算的。对于代码的维护者压力太大、

function time_tran($the_time){
$now_time = date("Y-m-d H:i:s",time()+8*60*60);
$now_time = strtotime($now_time);
$show_time = strtotime($the_time);
$dur = $now_time - $show_time;
if($dur < 0){
return $the_time;
}else{
if($dur < 60){
return $dur.'秒前';
}else{
if($dur < 3600){
return floor($dur/60).'分钟前';
}else{
if($dur < 86400){
return floor($dur/3600).'小时前';
}else{
if($dur < 259200){//3天内
return floor($dur/86400).'天前';
}else{
return $the_time;
}
}
}
}
}
}