在特定条件下增加日期

时间:2014-03-26 23:08:43

标签: php mysql

我正在开展一个项目,我处于这种情况的前面:

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

我的文件可以像那样恢复:

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

我的Mysql表:

Action varchar 
Time   Datetime

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

所以可能出现的问题是:

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

有人知道我能做些什么来解决这种情况?

提前致谢

Ps:我用PHP编码

1 个答案:

答案 0 :(得分:1)

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


我会像这样接近它:

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

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

处理下一行时,计算前一行的'date=''time='之间的持续时间(保存在变量中)与'date='值相同的{{1}来自当前(新)行的值。

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

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

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

这就是我要使用的方法。

(我想你可能需要重置'date='保存变量,当你遇到文件中的下一个'time='行时,将其设置为00:00:00,所以计算持续时间将是积极的。)

在一个更普遍的问题中,有一个持续时间超过24小时的角落情况,但没有好办法从文件中显示的数据中检测出来。