当我试图在gmstrftime.it结果20:26中打印160000但是对于80000它会给出22:13。我不知道为什么会发生这种情况。对gmstrftime有什么限制吗?
echo gmstrftime('%H:%M', 160000);
它给出20:26。
echo gmstrftime('%H:%M', 80000);
它给出了22:13
答案 0 :(得分:0)
正如deceze所指出的那样,第二个arg是时代或unix时间。自1970年1月1日00:00以来的秒数。如果你离开第二个arg,你将获得当前时间。
<?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的不同日期以查看纪元时间。
答案 1 :(得分:0)
160000
不是PHP(或其他常见系统)定义时间戳的任何时间戳。你所拥有的只是一个以“军事时间”表示为整数的时间。首先,任何gm
函数都可能不是您想要使用的函数,因为您从这个“时间戳”开始缺少时区信息,因此转换为GM时间是不明确的,如果不是不可能的话。
您可以做的最好的事情是:
$timestamp = DateTime::createFromFormat('His', sprintf('%06d', 160000))->format('U');
echo strftime('%H:%M', $timestamp);