我有一个包含两列的 dataFrame,[\'StartDate\' ,\'duration\'],StartDate 列中的元素是 datetime 类型,duration 是 int。例如:StartDate Duration08:16:05 ...
我有一个包含两列的 dataFrame, ["StartDate" ,"duration"]
中的元素 StartDate
是 datetime
类型,而元素 duration
是整数。
就像是:
StartDate Duration
08:16:05 20
07:16:01 20
我期望得到:
EndDate
08:16:25
07:16:21
只需将秒数添加到小时数即可。
我正在检查一些关于它的想法,比如增量 时间类型 ,并且所有这些日期时间都有可能添加增量时间,但到目前为止,我只能找到如何使用 DataFrames 来做到这一点(以矢量方式,因为可能可以遍历执行操作的所有行)。
对于任何感兴趣的人,我都提出了一个可靠的方法来处理这个问题
/**
* @var \DateInterval
*/
private $remainder;
/**
* @param \DateTimeImmutable $date
* @param string $modifier
* @return \DateTimeImmutable
*/
private function nextInterval(\DateTimeImmutable $date, $modifier)
{
$dayNumber = (int)$date->format('j');
$next = $date->modify($modifier);
if (!is_null($this->remainder)) {
$next = $next->add($this->remainder);
$dayNumber += $this->remainder->days;
$this->remainder = null;
}
// This should in general only apply to months which do not have the same daynumber in that month after adding
if ($dayNumber !== (int)$next->format('j')) {
$n = $next->modify('last day of last month');
$this->remainder = $n->diff($next);
$next = $n;
}
return $next;
}
结果:
2014-11-30
2014-12-30
2015-01-30
2015-02-28
2015-03-30
2015-04-30
2015-05-30
和
2015-12-30
2016-01-30
2016-02-29
2016-03-30
2016-04-30