Php unix时间戳到午夜

Php unix时间戳到午夜,php,unix-timestamp,Php,Unix Timestamp,如果我有一个随机的unix时间戳,如何将它舍入到今天的午夜或用户选择的午夜。原因是我想在某一天的午夜之后加上小时和分钟 例如,如果时间戳是1324189035,那么我如何删除小时、分钟和秒以将时间戳放置在当天的午夜。因为您如何使用它,我根本不会计算午夜时间:简单地将添加到时间戳中的内容转换为24小时时间,然后使用strotime要容易得多: echo date('d-m-Y H:i:s', strtotime('today', 1324189035)); echo strtotime("0:0

如果我有一个随机的unix时间戳,如何将它舍入到今天的午夜或用户选择的午夜。原因是我想在某一天的午夜之后加上小时和分钟


例如,如果时间戳是
1324189035
,那么我如何删除小时、分钟和秒以将时间戳放置在当天的午夜。

因为您如何使用它,我根本不会计算午夜时间:简单地将添加到时间戳中的内容转换为24小时时间,然后使用strotime要容易得多:

echo date('d-m-Y H:i:s', strtotime('today', 1324189035));
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;
function getMidnight ($timestamp) { return $timestamp - ($timestamp % 86400); }

就这样吧:
date-d$(date++%F)+%s

此解决方案非常优雅且令人愉悦。需要记住的是,这都是GMT,因此要在任何其他时区中获得17:50,需要在该时间映射之前添加时间偏移,然后在之后再次删除(例如,假设您最终要在数据库中搜索数据时使用GMT/UTC时间)。它似乎将午夜映射到前一个午夜:
echo strotime(“0:00+0000”,1443441600)打印
1443398400
这很漂亮。我曾经看到过这样一个例子,有人跳出框框思考,比如
$roundedStamp=$time-($time%86400)和它是聪明的,但不是完美的。它向上或向下取整取决于它是否工作。这样做:)这将返回一个日期字符串,您需要添加
strotime
,以获取午夜的时间戳,该时间戳应环绕正在回送的整个代码。@SolomonClosson
strotime('today',1324189035)
已经存在并执行该操作,
date
只是为了证明它实际上是午夜。awww,gotcha,这里有点与
date
echo混淆了。希望这能对我这种情况的人有所帮助,稍微修改一下,从UNIX纪元中获取天数(从相同的时间戳中消除舍入错误):
round(strotime('today',time())/86400))
。我的用例是从Epoch开始寻找奇数天来交替cron过程
round($daysFromUnixEpoch)%2==0
这也是非常可读且非常灵活的。e、 g.:
strotime(“现在+1年+1天午夜”)
只想添加strotime(“今天午夜”)和strotime(“午夜”)都输出相同的时间戳