Python中如何记录程序启动日期并计算运行间隔天数?
当然可以!这两个需求在Python里都能很方便地实现,我分两种场景给你详细说明:
场景1:查看当前程序运行期间,自启动以来的天数
如果是想在程序本次运行过程中,随时查看从启动到当前时刻已经过去的天数,可以借助datetime模块来实现。思路很简单:在程序启动时记录下当前时间,之后需要计算时,用当前时间减去启动时间,取结果的days属性即可。
示例代码:
import datetime # 程序启动时立即记录启动时间 start_time = datetime.datetime.now() # 假设程序运行了一段时间后,在某个需要的节点计算已过去的天数 # 这里模拟后续操作,实际中可以在任意位置调用这段计算代码 current_time = datetime.datetime.now() elapsed_interval = current_time - start_time elapsed_days = elapsed_interval.days print(f"自程序启动以来已经过去了 {elapsed_days} 天")
注意:如果启动时间和当前时间间隔不足24小时,days会返回0。如果需要更精细的时间计算,可以结合total_seconds()转换成天数(比如elapsed_interval.total_seconds() / 86400),不过你问的是天数,这个方法足够用了。
场景2:记录上次启动日期,计算两次运行的间隔天数
这个需求需要把上次启动的时间持久化存储到文件里(比如一个简单的文本文件),下次程序启动时读取这个文件,再和当前启动时间计算差值。
示例代码:
import datetime def calculate_days_between_starts(): # 用来存储上次启动时间的文件路径 record_file = "last_program_start.txt" # 获取本次启动的日期(如果不需要时分秒,用date.today()更精准) current_start_date = datetime.date.today() days_interval = 0 # 尝试读取上次启动记录 try: with open(record_file, "r") as f: last_start_str = f.read().strip() # 把文件里的字符串解析成date对象 last_start_date = datetime.datetime.strptime(last_start_str, "%Y-%m-%d").date() # 计算间隔天数 days_interval = (current_start_date - last_start_date).days print(f"距离上次程序启动已经过去了 {days_interval} 天") except FileNotFoundError: # 文件不存在说明是第一次运行 print("这是程序第一次启动,没有历史记录") # 把本次启动日期写入文件,覆盖旧记录 with open(record_file, "w") as f: f.write(current_start_date.strftime("%Y-%m-%d")) # 返回间隔天数,赋值给变量使用 return days_interval # 调用函数,获取间隔天数并赋值给变量 days_between = calculate_days_between_starts() print(f"间隔天数变量值为: {days_between}")
比如你说的例子:5月7日第一次启动程序,文件会写入2018-05-07;5月14日再次启动时,程序读取到上次日期,计算2018-05-14 - 2018-05-07得到7天,days_between变量就会是7,完全符合你的需求。
小提示:如果需要保留时分秒的精确记录,只需要把date.today()换成datetime.now(),同时把日期格式改成%Y-%m-%d %H:%M:%S即可。
内容的提问来源于stack exchange,提问作者Nathan
相关产品推荐
相关产品推荐

