在特定条件中增加日期


Increment a date in a specific condition

我正在做一个项目,我遇到了这种情况:

解析文件并获取值以填充数据库。

我的简历可以是这样的:

xxxxxxx date=2014-04-26 xxxxxx  (the first line)
Action1 xxxxxx time=12:00:00
Action2 xxxxxx time=12:05:00

My Mysql Table:

Action varchar 
Time   Datetime

我将每5分钟收到一个新文件,并保存Action和DateTime(我需要使用第一行的Date)在我的表中。

可能出现的问题是:

xxxxxxx date=2014-04-26 xxxxxx  (the first line)
Action1 xxxxxx time=23:57:00
Action2 xxxxxx time=00:02:00

事实上,00:00:02的日期是不正确的。

但是下次就可以了,因为我将有:

xxxxxxx date=2014-04-27 xxxxxx  (the first line)
Action1 xxxxxx time=00:02:00
Action2 xxxxxx time=00:07:00

有人知道我该怎么做才能解决这种情况吗?

Thanks in advance

Ps:我在PHP编码

您几乎必须保证'time='值按升序排列,并且文件中的第二行(带有'time=')实际上是前一行'date='中表示的日期值的时间。


我将这样处理它:

在具有'date='的行中,保留该值(在一个变量中),以便在处理下一行时可用。

在下一行中,使用保存的'date='值和当前行的'time='值,并将它们组合为该行的DATEIME。保存'date=''time='组件值(在变量中),以便在处理文件中的下一行时可以使用这些值。

当您处理下一行时,计算前一行的'date=''time='之间的持续时间(保存在变量中),具有相同的'date='值以及当前(新)行的'time='值。

如果持续时间大于等于零,则假定是同一日期。(使用保存的'date='值和新的'time='值创建DATETIME来分配给该记录)

如果持续时间小于零(负),则可以假设'date='部分已滚动到第二天,因此将保存的date=值增加一天。将新增加的'date='值与该行的'time='值结合起来,创建要分配给该记录的DATETIME。

对随后的每一行重复此操作,保存分配给该行的DATETIME的'date=''time='组件。计算持续时间,当出现负数时,将保存的'date='值增加1。

这就是我要用的方法。

(我认为您可能需要重置'time='保存变量,当您遇到文件中的下一个'date='行时将其设置为00:00:00,因此持续时间的计算将是正的)

在一个更普遍的问题中,存在持续时间超过24小时的极端情况,但是从文件显示的数据中没有很好的方法来检测。