- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我需要在 PHP 网站上实现以下目标。
我们的用户在他们的应用中指定了一个“粒度”值 - 即 14400,代表 4 小时的时间。
现在,基本上我需要做的是从午夜开始根据这个粒度来跟踪“ Action ”——例如,如果 Action 发生在凌晨 03:15,它将在 00:00 - 03 之间被跟踪: 59,同样如果一个 Action 发生在凌晨 4:25,它会在 04:00 - 07:59 下被跟踪。
我正在尝试编写一个具有以下内容的函数:
function _get_granulation($granulation)
{
$time = date("G:i"); // Gives us current time (e.g. 04:15 or 22:10)
$iterations = ($granulation/86400); // Number of iterations in a 24hr period
}
现在我对从这里去哪里有点困惑。
基本上,我需要它做的就是将时间值传回,表示记录条目的时间范围。
有人可以在这里提供建议/帮助吗?
最佳答案
这个函数应该给你你正在寻找的东西:
function _get_granulation($granulation, $now = null) {
if (is_null($now)) $now = time();
$daySecs = date('G', $now) * 3600 + date('i', $now) * 60 + date('s', $now);
$segment = $granulation * floor($daySecs / $granulation);
$hrs = floor($segment / 3600);
$min = floor(($segment - $hrs * 3600) / 60);
$sec = $segment - $hrs * 3600 - $min * 60;
return date('H:i:s', mktime($hrs, $min, $sec));
}
我不直接使用 unix 时间戳,以避免夏令时问题,而是使用实际的小时/分钟/秒值。
我添加了一个额外的参数来帮助测试,因此我们不必总是使用当前时间。这允许像这样的测试脚本:
$times = array('10:30:00', '07:59:00', '23:20:00');
$granulations = array(21600, 14400, 3600, 1800);
foreach ($granulations as $g) foreach ($times as $t) {
$segment = _get_granulation($g, strtotime($t));
echo("{$t} / {$g} = {$segment}\n");
}
产生这样的输出:
10:30:00 / 21600 = 06:00:00
07:59:00 / 21600 = 06:00:00
23:20:00 / 21600 = 18:00:00
10:30:00 / 14400 = 08:00:00
07:59:00 / 14400 = 04:00:00
23:20:00 / 14400 = 20:00:00
10:30:00 / 3600 = 10:00:00
07:59:00 / 3600 = 07:00:00
23:20:00 / 3600 = 23:00:00
10:30:00 / 1800 = 10:30:00
07:59:00 / 1800 = 07:30:00
23:20:00 / 1800 = 23:00:00
关于php - 计算时间粒度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17253427/
我有 2 个事实表,每个表都有一个度量组,生产和生产订单。生产具有较低粒度的生产信息(在组件级别)生产订单具有较高级别的信息(具有抬头数量等的订单级别)。 我在 productionorderid 的
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
我第一次尝试了解 Akka/Actors,并且对每个 Actor 职责的粒度有点困惑。 在我的应用程序中,有可以使用 WidgetRegistrar 注册/取消注册的 Widget。要向 Regist
我们一直在使用 MVP 模式和 Winforms,并取得了相当大的成功。然而,关于 MVP 总是弹出一个问题: 对于演示者来说,什么是好的粒度? 我的意思是:对于 Winforms,细粒度通常适用于用
我通常使用 git add -p 添加更改,而且很多时候有几个代码块的大块头,由空行分隔。 但是,git 不会进一步拆分 大块头,我不得不求助于手动编辑。 如何增加 hunk 的粒度,以便每个代码块都
例如,我看到 dumps.wikimedia.org/other/pagecounts-raw/,但那里没有特定国家/地区的数据... 最佳答案 据我所知,没有。出于明显的隐私原因,发布的页面查看统计
JavaScript 的源映射似乎通常不比 token 粒度更精细。 例如,identity-map uses token granularity . 我知道我看过其他例子,但不记得在哪里。 为什么我
我有这些目录: ./Tools ./ook/Tools. 我在 setup.cfg 中的 py.test 的 norecursedirs 选项中添加了 Tools。正如预期的那样,当 py.test
我正在使用这个 Accelerometer graph来自 Apple 并尝试转换他们的 G-force 代码以计算 +/- 128。 下图显示标签中的 x、y、z 值与图表上的输出不匹配:(请注意,
此问题围绕 Android 应用程序的架构展开。 在使用 LifeCycle 组件 ViewModel 时,最好是每个 fragment 一个 ViewModel 还是订阅 fragment 的父 A
我是一名优秀的程序员,十分优秀!