Php 使用gmstrftime显示时间时出现问题
当我尝试在gmstrftime中打印160000时,结果是20:26,但对于80000,结果是22:13。我不知道为什么会这样。他们对gmstrftime有什么限制吗Php 使用gmstrftime显示时间时出现问题,php,Php,当我尝试在gmstrftime中打印160000时,结果是20:26,但对于80000,结果是22:13。我不知道为什么会这样。他们对gmstrftime有什么限制吗 echo gmstrftime('%H:%M', 160000); 时间是20:26 echo gmstrftime('%H:%M', 80000); 它给出了22:13,正如deceze指出的,第二个参数是纪元或unix时间。自1970年1月1日00:00以来的秒数。如果不使用第二个参数,则将获得当前时间 <?php
echo gmstrftime('%H:%M', 160000);
时间是20:26
echo gmstrftime('%H:%M', 80000);
它给出了22:13,正如deceze指出的,第二个参数是纪元或unix时间。自1970年1月1日00:00以来的秒数。如果不使用第二个参数,则将获得当前时间
<?php
$time1 = strtotime("2014-02-03 20:26");
echo "First time (".date('c', $time1).") in epoch: $time1\n";
echo gmstrftime('%H:%M', $time1)."\n";
$time2 = strtotime("2014-02-03 22:13");
echo "Second time (".date('c', $time2).") in epoch: $time2\n";
echo gmstrftime('%H:%M', $time2)."\n\n";
?>
为$time1和$time2插入不同的日期以查看纪元时间。
160000
不是PHP(或其他常见系统)定义时间戳的时间戳。你所拥有的只是一天中以“军事时间”表示的时间,它存储为整数。因此,首先,任何gm
函数都可能不是您想要使用的,因为您从这个“时间戳”开始就缺少时区信息,因此转换为gm时间即使不是不可能,也是不明确的
您所能做的最好的事情是:
$timestamp = DateTime::createFromFormat('His', sprintf('%06d', 160000))->format('U');
echo strftime('%H:%M', $timestamp);
第二个参数是UNIX时间戳,而不是“16:00:00”的“160000”。@deceze:那么解决这个问题的方法是什么呢。因为我正在将时间戳保存为数据库中的整数,在前端我正在对时间戳进行一些计算并打印最终输出。它给出了错误解析错误:语法错误,意外的“(”,需要T_字符串或T_变量或“{”或“$”