PHP 函数gmstrftime()将秒转换成天时分秒

  • 应用场景: 停车场计算一辆车的停车时长,比如1天13时24分30秒, 数据表里只存了一个进场时间的时间戳
 /**
     * 换算时间格式
     * @param int $in_time 进场时间的时间戳
     * @return string
     */
    public function getInParkLongTime($in_time = 0)
    {

        if ($in_time != 0){
            $second = time()-$in_time;
            $seconds = (int)$second;
            if( $seconds < 86400 ){//如果不到一天
                $format_time = gmstrftime('%H时%M分%S秒', $seconds);
            }else{
                $time = explode(' ', gmstrftime('%j %H %M %S', $seconds));//Array ( [0] => 04 [1] => 14 [2] => 14 [3] => 35 )
                $format_time = ($time[0]-1).'天'.$time[1].'时'.$time[2].'分'.$time[3].'秒';
            }
        }else{
            $format_time = 'error';
        }

        return $format_time;

    }

PHP 文档中

  • gmstrftime

(PHP 4, PHP 5, PHP 7)

gmstrftime — 根据区域设置格式化 GMT/UTC 时间/日期

  • 说明
gmstrftime ( string $format [, int $timestamp ] ) : string
  • 参数说明
格式 描述 返回值示例
--- ---
%a 当前区域星期几的简写 SunSat
%A 当前区域星期几的全称 SundaySaturday
%d 月份中的第几天,十进制数字(范围从 01 到 31) 0131
%e 月份中的第几天,十进制数字,一位的数字前会加上一个空格(范围从 ' 1' 到 '31') 在 Windows 上尚未按描述实现。更多信息见下方。 131
%j 年份中的第几天,带前导零的三位十进制数(范围从 001 到 366) 001366
%u 符合 ISO-8601 星期几的十进制数表达 [1,7],1 表示星期一 1 (星期一) 到 7 (星期日)
%w 星期中的第几天,星期天为 0 0 (星期天) 到 6 (星期六)
--- ---
%U 本年的第几周,从第一周的第一个星期天作为第一天开始 13 (for the 13th full week of the year)
%V %V - 本年第几周的 ISO-8601:1988 格式,范围从 01 到 53,第 1 周是本年第一个至少还有 4 天的星期,星期一作为每周的第一天。(用 %G 或者 %g 作为指定时间戳相应周数的年份组成。) 0153 (where 53 accounts for an overlapping week)
%W 本年的第几周数,从第一周的第一个星期一作为第一天开始 46 (for the 46th week of the year beginning with a Monday)
--- ---
%b 当前区域月份的简写 JanDec
%B 当前区域月份的全称 JanuaryDecember
%h 当前区域月份的简写(%b 的别名) JanDec
%m 两位数的月份 01 (是一月份) 到 12 (是十二月份)
--- ---
%C 两位数显示世纪(年份除以 100,截成整数) 19 是 20 世纪
%g 2 位数的年份,符合 ISO-8601:1988 星期数(参见 %V)。和 %V 的格式和值一样,只除了如果 ISO 星期数属于前一年或者后一年,则使用那一年。 比如:2009年1月6日那一周是 09
%G %g 的完整四位数版本 比如:2009年1月3日那一周是 2008.
%y 两位数显示年份 比如: 09 是 2009,79 是 1979
%Y 四位数显示年份 比如: 2038
时间 --- ---
%H 以 24 小时格式显示两位小时数 0023
%I 以 12 小时格式显示两位小时数 0112
%l('L' 的小写) 以 12 小时格式显示小时数,单个数字前含空格 112
%M 两位的分钟数 0059
%p 指定时间的大写 “AM” 或 “PM” 比如: 00:31 是 AM ,22:23 是PM
%P 指定时间的小写 “am” 或 “pm” 比如:00:31 是 am ,22:23 是pm
%r 和 "%I:%M:%S %p" 一样 比如: 21:34:17 是 09:34:17 PM
%R 和 "%H:%M" 一样 比如: 12:35 AM 是 00:35,4:44 PM 是 16:44
%S 两位数字表示秒 0059
%T 和 "%H:%M:%S" 一样 比如: 09:34:17 PM 是 21:34:17
%X 当前区域首选的时间表示法,不包括日期 例如: 03:59:1615:59:16
%z 从 UTC 的时区偏移 或 简写(由操作系统决定) 比如: 东部时间是 -0500EST
%Z %z 没有给出的 UTC 的时区偏移 或 简写(由操作系统决定) 比如: -0500EST 是东部时间
时间和日期戳 --- ---
%c 当前区域首选的日期时间表达 比如: 2009 年 2 月 5 日上午 12:45:10 是 Tue Feb 5 00:45:10 2009
%D 和 "%m/%d/%y" 一样 比如: 2009 年 2 月 5 日是 02/05/09
%F Same as "%Y-%m-%d" (commonly used in database datestamps) 比如:2009 年 2 月 5 日是 2009-02-05
%s Unix纪元的时间戳(和 time() 函数一样) 比如: 1979 年 9 月 10 日上午 8 点 40 分 00 秒是 305815200
%x 当前区域首选的时间表示法,不包括时间 比如: 2009 年 2 月 5 日是 02/05/09
其他 --- ---
%n 换行符("\n") ---
%t Tab 字符("\t") ---
%% 文字上的百分字符("%") ---

这个参数的最大长度是 1023 个字符。

  • 可选的 timestamp 参数是一个 integer 的 Unix 时间戳,如未指定,参数值默认为当前本地时间。也就是说,其值默认为 time() 的返回值。

你可能感兴趣的:(PHP 函数gmstrftime()将秒转换成天时分秒)