如何将unix时间戳上下舍入到最接近的半小时?

2022-08-30 14:42:26

好吧,所以我正在我的CRM系统中处理日历应用程序,我需要找到半小时的上限和下限,这些上限和下限超出了某人在日历中输入事件的时间戳,以便在数据库上运行一些SQL以确定他们是否已经在该时间段内预订了某些东西。

例如,我的时间戳为1330518155 = 2012 年 2 月 29 日 16:22:35 GMT+4,因此我需要获取1330516800和1330518600,其等于 16:00 和 16:30。

如果有人有任何想法或认为我正在以愚蠢的方式开发日历,请告诉我!这是我第一次在这样的任务上,涉及如此多的时间和日期工作,所以任何建议都值得赞赏!


答案 1

使用模数。

$prev = 1330518155 - (1330518155 % 1800);
$next = $prev + 1800;

模运算符给出除法的余部分。


答案 2

我没有清楚地阅读这些问题,但是对于那些不需要两者之间范围的人来说,这个代码将四舍五入到最接近的半小时。使用SenorAmor的一些代码。道具和他疯狂优雅的解决方案,以正确的问题。

$time = 1330518155; //Or whatever your time is in unix timestamp

//Store how many seconds long our rounding interval is
//1800 equals one half hour
//Change this to whatever interval to round by
$INTERVAL_SECONDS = 1800;  //30*60

//Find how far off the prior interval we are
$offset = ($time % $INTERVAL_SECONDS); 

//Removing this offset takes us to the "round down" half hour
$rounded = $time - $offset; 

//Now add the full interval if we should have rounded up
if($offset > ($INTERVAL_SECONDS/2)){
  $nearestInterval = $rounded + $INTERVAL_SECONDS;
}
else{
  $nearestInterval = $rounded 
}

推荐