cronjob中的圆形时间戳

时间:2016-01-29 12:32:04

标签: python cron crontab

每小时都有4个cronjobs。 第一个脚本在启动cronjob时开始。 第二个人睡了15秒。 第三个人睡了30秒。 第四个人睡了45秒。

这是我每15秒就有一份工作的方式。

它有效,但如果有人有更好的方法,请告诉我。

我真正的挑战是我开始每个脚本都保存一个时间戳,我将其用于其他目的和数据库中的其他值。 它显示每个cronjob各种各样的+/-几秒钟。

是否可以将时间戳四舍五入到最近的整分钟,再加上15秒,再加上30秒再加上45秒:

timestamp = strftime("%H:%M:%S")

因此,如果我的cronjobs在12:00:01或11:59:58开始,则所有4个脚本都会有时间戳:

12:00:00
12:00:15
12:00:30
12:00:45

我希望它有道理并且有可能吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试将时间分成几小时和几秒,然后将它们四舍五入到最接近的分钟和小时。

 def split_hour(timer):
     hour=timer[,2]
     return hour
 def split_min(timer):
     min=timer[3,6]
     return min
 def split_sec(timer,min):
     sec=timer[6,]
     if sec>=30:
          sec=0
          min=min+1
          return min
     else:
          sec=0

你可以做这样的事情我可能会弄错符号,但是你可以拆分秒并将其向上或向下绕上然后将其添加到分钟。

答案 1 :(得分:0)

此功能将四舍五入到最接近的分钟,即如果时间戳中的秒数小于30,则前一整分钟,如果下一整分钟为30或更多。

import datetime


def round_seconds(timestamp):
    ts_sec = timestamp.timetuple()[5]
    timestamp_rounded = timestamp.replace(second=0, microsecond=0)
    if ts_sec < 30:
        return timestamp_rounded
    else:
        return timestamp_rounded + datetime.timedelta(minutes=1)

现在你可以得到这样的时间戳:

timestamp = round_seconds(datetime.datetime.now())
相关问题