Unix时间戳到午夜


unix timestamp round to midnight

如果我有一个随机的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

如果你想在人类可读的,使用datem/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