日期天数差计算(Python)

这篇博客介绍了如何使用Python处理json文件中的日期数据,计算两个日期之间的天数差。内容包括读取json文件,日期格式校验,日期转换为datetime.date对象进行计算,并提供了不同测试用例的处理情况,如日期格式正常、缺少日信息以及日期错误的情况。
摘要由CSDN通过智能技术生成

目录

题目描述

输入/输出描述

解决思路

代码

代码走读

传送门

测试用例

1. json文件中日期格式正常:

2. json文件中只有年和月,没有日(day)

3. 日期错误。


题目描述

从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: <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值