【问题标题】:PHP: time incrementPHP:时间增量
【发布时间】:2012-05-30 20:28:33
【问题描述】:

在我的 PHP 代码中,我有一个 array1,它有 2 列,即:

ID | startDate
1  | 2012-02-03 11:50
2  | 2012-02-03 11:50
3  | 2012-02-03 11:50
4  | 2012-02-03 11:50

我需要将array1 转换为以下array2

ID | startDate
1  | 2012-02-03 11:50:00
2  | 2012-02-03 11:50:30
3  | 2012-02-03 11:51:00
4  | 2012-02-03 11:51:30

所以,我应该从第二个条目开始将时间增加 30 秒。正如您在示例中看到的那样,这个增量应该是累积传播的。我对PHP不是很流利。有人知道与时间相关的 PHP 函数可以用几行代码完成这项工作吗?

【问题讨论】:

  • 您要添加 50 秒、0 秒、50 秒、0 秒等?他们不是每个多 50 秒……第三个没有增加 100 秒。算法是什么?
  • @Rudie:不,如果您再次查看我的示例,您会看到每条记录从 50 秒开始累积递增。第 2 行和第 4 行没有 0 秒增量。
  • 11:50:5011:51:00的区别不是50秒,还是我傻?
  • 哦,对不起,鲁迪。你说的对。让我更新帖子。
  • 啊,所以你的意思是每个 50 秒 =) 这让它更简单...... J.Money 就是对的。

标签: php arrays time


【解决方案1】:

我会看看date()strtotime()

$array2 = array();
$incr = 0;
foreach ($array1 as $value) {
    $time = strtotime($value);
    $array2[] = date('Y-m-d H:i:s', $time + $incr);
    $incr += 30; 
}

【讨论】:

  • 虽然每个都不是多 50 秒...它是 0、50、60、110... 所以 +50、+10、+50。
  • @SamDufel 在这种情况下,$value 将始终相同,因此 $time 将始终相同,但如果数组值不同,则每次都需要调用 strtotime。
  • @Gusgus 11:50:50 到 11:51:00 之间有 10 秒
  • 11:50:50 和 11:51:00 有什么区别?这不是50秒,是吗?你知道一分钟有多少秒吗?
  • @Rudie:再次抱歉。我今天看的数字太多了;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
相关资源
最近更新 更多