目录
题目描述
从json文件中读取两个时间数据(数据格式例如:2019.01.01,数据类型是字符串),并计算结果,打印出两个时间间隔了多少天。
输入/输出描述
输入描述
json文件名称datetime.json,格式如下:
{
"day1": "1949.10.01",
"day2": "2019.04.25"
}
输出描述
控制台打印两个时间(day1和day2)间隔了多少天。
25408
解决思路
读取json文件中的数据后解析有用的部分,并做校验(检查格式是否正确)。在日期格式正确的情况下将日期转换为datetime.date,并做计算。最后输出结果。
代码
"""
时间差计算。
从json文件中读取两个时间数据,计算并打印两个时间间隔了多少天。
"""
import datetime
import json
import traceback
class TimeFormatError(Exception):
def __init__(self, message):
self.message = "TimeFormatError: " + message
def days_compute(times):
"""
Calculated date interval.
:param times: <dict> time dictionary
:return: <int> date interval
"""
time1 = times["day1"]
time2 = times["day2"]
if time1.count(".") < 2:
raise TimeFormatError("Time format(yyyy.mm.dd) error. %s" % time1)
if time2.count(".") < 2:
raise TimeFormatError("Time format(yyyy.mm.dd) error. %s" % time2)
date1 = parse(time1)
date2 = parse(time2)
return (date2 - date1).days
def parse(time_str):
"""
Parse time format.
:param time_str: <str> time string
:return: <datetime.date> date
"""
time_list = time_str.split(".")
year = time_list[0]
month = time_list[1]
day = time_list[2]
return datetime.date(int(year), int(month), int(day))
def read_json_file(path):
"""
Read json file.
:param path: <