如果我有一个随机的unix时间戳,如何将其舍入到今天的午夜或用户选择的午夜。这样做的原因是我想在某一天的午夜之后加上小时和分钟。
例如,如果时间戳是1324189035
,那么我如何删除小时、分钟和秒,将时间戳放在当天的午夜
echo date('d-m-Y H:i:s', strtotime('today', 1324189035));
由于您使用它的方式,我根本不会计算午夜:简单地将添加到时间戳中的内容转换为24小时时间,然后使用strtotime:
要容易得多。echo strtotime("0:00",1324189035); // 1324184400
echo strtotime("17:50",1324189035); // 1324248600
如果你想在人类可读的,使用date
和m/d/Y H:i:s
:
echo date('m/d/Y H:i:s', strtotime('17:50',1324189035)); // 12/18/2011 17:50:00
简单使用
strtotime('today midnight');
只管做
date('d-m-Y',strtotime('today'));
简单!
一个简单的解决方案是使用对表达式取模,从整数日时间戳中删除超出的秒数。
<?php
date_default_timezone_set('UTC');
$timestamp = time();
echo "timestamp : " . $timestamp . PHP_EOL;
echo "timestamp formatted : " . date('Y-m-d H:i:s', $timestamp) . PHP_EOL;
$diff = $timestamp % (60 * 60 * 24);
echo "diff : " . $diff . PHP_EOL;
$midnight = $timestamp - $diff;
echo "midnight : " . $midnight . PHP_EOL;
echo "midnight formatted : " . date('Y-m-d H:i:s', $midnight) . PHP_EOL;
这将输出如下结果:
时间戳:1575451074
时间戳格式:2019-12-04 09:17:54
diff midnight: 1575417600
午夜格式:2019-12-04 00:00:00
这里是一个单行函数,可以从任何时间戳中获取午夜时间。
function getMidnight ($timestamp) { return $timestamp - ($timestamp % 86400); }
http://sandbox.onlinephpfunctions.com/code/1d85c935e71fcf011284ae33658e0c68dd8d8c28 不如这样:date -d $(date +%F) +%s