2401_83513935 2024-06-04 12:29 采纳率: 32%
浏览 4
已结题

要求用pythondatetime库,求从给定时刻开始过了给定时间后的时刻。

要求用pythondatetime库,求从给定时刻开始过了给定时间后的时刻。
输入要求:有若干组数据。每组数据有2行,第一行是给定时刻,可能有两种格式,格式1)年月日时分(时是24小时制),格式2)月﹣日﹣年 时:分 上下午(时是12小时制,注意没有秒)。第二行是时间增量,也可能有两种格式,格式1)一个整数,代表多少秒,格式2)日时分。
输出要求:对每组数据,输出给定时刻加上时间增量后的新时刻,24小时制格式如:1982-12-10 12:12:28

样例输入
1982 12 1 23 0
737848
1982 12 1 23 15
180 2 18
12-01-1982 1:23 AM
737848
样例输出
1982-12-10 11:57:28
1983-05-31 01:33:00
1982-12-09 14:20:28

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-06-04 12:29
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    要解决这个问题,我们可以使用Python的datetime库来处理日期和时间的解析和计算。以下是一段示例代码,它演示了如何根据你的要求解析输入,计算新的时间,并以正确的格式输出结果。

    from datetime import datetime, timedelta
    
    # 解析24小时制的日期和时间
    def parse_datetime_24h(date_str):
        return datetime.strptime(date_str, '%Y %m %d %H %M')
    
    # 解析12小时制的日期和时间
    def parse_datetime_12h(date_str):
        return datetime.strptime(date_str, '%m-%d-%Y %I:%M %p')
    
    # 解析时间增量(秒)
    def parse_timedelta_seconds(seconds):
        return timedelta(seconds=seconds)
    
    # 解析时间增量(日时分)
    def parse_timedelta_days_hours_minutes(time_str):
        days, hours, minutes = map(int, time_str.split())
        return timedelta(days=days, hours=hours, minutes=minutes)
    
    # 根据输入格式解析给定时刻
    def parse_given_datetime(input_str):
        if ':' in input_str:  # 12小时制
            return parse_datetime_12h(input_str)
        else:  # 24小时制
            return parse_datetime_24h(input_str)
    
    # 根据输入格式解析时间增量
    def parse_time_increment(input_str):
        if input_str.isdigit():  # 秒数
            return parse_timedelta_seconds(int(input_str))
        else:  # 日时分
            return parse_timedelta_days_hours_minutes(input_str)
    
    # 处理输入数据
    def process_input(input_data):
        for i in range(0, len(input_data), 2):
            given_datetime_str = input_data[i].strip()
            time_increment_str = input_data[i+1].strip()
            
            given_datetime = parse_given_datetime(given_datetime_str)
            time_increment = parse_time_increment(time_increment_str)
            
            new_datetime = given_datetime + time_increment
            print(new_datetime.strftime('%Y-%m-%d %H:%M:%S'))
    
    # 示例输入数据
    input_data = [
        "1982 12 1 23 0",
        "737848",
        "1982 12 1 23 15",
        "180 2 18",
        "12-01-1982 1:23 AM",
        "737848"
    ]
    
    # 调用函数处理输入
    process_input(input_data)
    

    这段代码定义了几个函数来分别处理不同的输入格式,并使用这些函数来解析给定时刻和时间增量。最后,它将这些值结合起来计算新的时间,并以指定的格式输出。

    关于参考资料,Python官方文档是一个很好的资源,特别是关于datetime模块的部分:

    请注意,这段代码假设输入数据是按照你提供的样例格式严格组织的。在实际应用中,你可能需要添加错误处理和验证逻辑来确保代码的健壮性。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月6日
  • 创建了问题 6月4日