【发布时间】:2012-01-22 22:16:51
【问题描述】:
如果我有一个随机的 unix 时间戳,我如何将它向下舍入到今天的午夜或用户选择的午夜。这样做的原因是我想在某一天的午夜之后添加小时和分钟。
例如,如果时间戳是1324189035,那么如何删除小时、分钟和秒以将时间戳放在当天的午夜。
【问题讨论】:
标签: php unix-timestamp
如果我有一个随机的 unix 时间戳,我如何将它向下舍入到今天的午夜或用户选择的午夜。这样做的原因是我想在某一天的午夜之后添加小时和分钟。
例如,如果时间戳是1324189035,那么如何删除小时、分钟和秒以将时间戳放在当天的午夜。
【问题讨论】:
标签: php unix-timestamp
echo date('d-m-Y H:i:s', strtotime('today', 1324189035));
【讨论】:
$roundedStamp = $time - ($time % 86400);,它很聪明,但并不完美。它根据情况向上或向下舍入,因此不起作用。这样做:)
strtotime 以获得午夜的时间戳,该时间戳应该包含正在回显的整个代码。
strtotime('today', 1324189035) 已经在那里并做了这件事,date 只是为了证明它实际上是午夜。
date 回声。
round(strtotime('today', time()) / 86400))。我的用例是发现自 Epoch 以来的奇数天以交替使用 cron 程序 round($daysFromUnixEpoch) % 2 === 0
由于您使用它的方式,我根本不会计算午夜:简单地将您添加到时间戳的内容转换为 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
【讨论】:
echo strtotime("0:00 +0000", 1443441600); prints 1443398400
简单使用
strtotime('today midnight');
【讨论】:
strtotime('now + 1 year + 1 day midnight')
做事
date('d-m-Y',strtotime('today'));
简单!
【讨论】:
一个简单的解决方案是使用 modulo 表达式从圆形日期时间戳中删除超过的秒数。
<?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
午夜差异: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
【讨论】: