网站设计 原型图,html购物网站模板,怎么改网站关键词,2021重大军事新闻描述
从json文件中读取两个时间数据#xff08;数据格式例如#xff1a;2019.01.01#xff0c;数据类型是字符串#xff09;#xff0c;并计算结果#xff0c;打印出两个时间间隔了多少天。
输入/输出描述
输入描述
json文件名称datetime.json#xff0c;格式如下#…描述
从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: time dictionary
:return: date intervaltime1 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: time string
:return: datetime_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: json file url
:return: json file datawith open(path, r) as json_file:
data json.load(json_file)
json_file.close()
return data
# main method
url datetimes.json
try:
base read_json_file(url)
day days_compute(base)
print(day)
except TimeFormatError as e:
print(str(e))
print(errmsg:\n%s % traceback.format_exc())
except Exception as e:
print(str(e))
print(errmsg:\n%s % traceback.format_exc())
代码走读
import datetime
import json
import traceback
# 自定义异常类型TimeFormatError, 用于在代码中校验错误时间格式时抛出
class TimeFormatError(Exception):
def __init__(self, message):
self.message TimeFormatError: message
# 定义计算日期差的函数
def days_compute(times):Calculated date interval.
:param times: time dictionary
:return: date interval# 从字典中获取两个时间日期
time1 times[day1]
time2 times[day2]
# 日期格式校验如果日期格式错误(例如“2019.10”)抛出TimeFormatError
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)
# 在这里调用自定义的parse函数将两个日期时间格式由字符串转换为datetime.date格式
date1 parse(time1)
date2 parse(time2)
# 返回计算结果整型
return (date2 - date1).days
# 解析时间字符串转换为datetime.date格式
def parse(time_str):Parse time format.
:param time_str: time string
:return: date# 使用split()函数将字符串转化为列表并分解出年月日
time_list time_str.split(.)
year time_list[0]
month time_list[1]
day time_list[2]
# 将日期转换为datetime.date格式并返回
return datetime.date(int(year), int(month), int(day))
# 读取json文件的信息将json文件转化为字典格式
def read_json_file(path):Read json file.
:param path: json file url
:return: json file datawith open(path, r) as json_file:
data json.load(json_file)
json_file.close()
return data
# main method
# 代码开始执行的地方
# json文件的url
url datetimes.json
try:
# 调用自定义的read_json_file函数获取json文件的内容
base read_json_file(url)
# 计算结果并打印输出
day days_compute(base)
print(day)
# 捕获异常打印错误信息和堆栈
except TimeFormatError as e:
print(str(e))
print(errmsg:\n%s % traceback.format_exc())
except Exception as e:
print(str(e))
print(errmsg:\n%s % traceback.format_exc())
传送门
1. count()函数
2. split()方法
3. int()函数
4. print()函数
5. str()函数
测试用例
1. json文件中日期格式正常
json格式如下
{
day1: 1949.10.01,
day2: 2019.04.25
}
python脚本执行结果
25408
即1949年10月1日与2019年4月25日间隔了25408天。
2. json文件中只有年和月没有日day
json文件如下
{
day1: 1949.10,
day2: 2019.04.25
}
python脚本执行如下可以看出程序抛出并捕获了自定义异常TimeFormatError并将其错误堆栈打出。
Time format(yyyy.mm.dd) error. 1949.10
errmsg:
Traceback (most recent call last):
File /Users/Desktop/Python Apps/untitled_test/day_compute.py, line 67, in
day days_compute(base)
File /Users/Desktop/Python Apps/untitled_test/day_compute.py, line 25, in days_compute
raise TimeFormatError(Time format(yyyy.mm.dd) error. %s % time1)
TimeFormatError: Time format(yyyy.mm.dd) error. 1949.10
3. 日期错误。
日期错误。例如输入的是1000年13月1日当然不存在这个日期。
json文件如下
{
day1: 1000.13.1,
day2: 2019.04.25
}
python执行结果如下
month must be in 1..12
errmsg:
Traceback (most recent call last):
File /Users/Desktop/Python Apps/untitled_test/day_compute.py, line 67, in
day days_compute(base)
File /Users/Desktop/Python Apps/untitled_test/day_compute.py, line 29, in days_compute
date1 parse(time1)
File /Users/Desktop/Python Apps/untitled_test/day_compute.py, line 46, in parse
return datetime.date(int(year), int(month), int(day))
ValueError: month must be in 1..12
代码捕获到python内置异常ValueError46行的parse函数内所抛出指出日期有误。
标签return,Python,天数,json,日期,file,time,day,TimeFormatError
来源 https://blog.csdn.net/TCatTime/article/details/89838237