Object of type datetime is not JSON serializable
回答
收藏

Object of type datetime is not JSON serializable

青云cz
2024-05-19 17:51·浏览量:1538
青云cz
影刀见习开发者
发布于 2024-05-19 17:511538浏览

魔法之类写的一个python指令,运行不会报错,但是会弹出好几条警告

> Object of type datetime is not JSON serializable


# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块

# 使用此指令前,先安装必要的python库,使用以下命令
# pip install pandas

import pandas as pd
from typing import *

from xbot import print

def calculate_workdays(start_datetime, end_datetime, holidays=None):
    """
    title: 计算工作时间
    description: 计算两个日期时间之间的工作时间数量,可以自定义节假日。
    inputs: 
        - start_datetime (str): 开始日期时间,格式为YYYY-MM-DD HH:MM:SS,eg: "2024-04-30 10:09:10"
        - end_datetime (str): 结束日期时间,格式为YYYY-MM-DD HH:MM:SS,eg: "2024-05-01 15:30:00"
        - holidays (List[str]): 自定义的节假日日期列表,格式为YYYY-MM-DD的字符串列表,eg: ["2024-05-01", "2024-05-02"]。默认为None,表示没有自定义节假日。
    outputs: 
        - workdays (int): 工作时间数量,以分钟为单位
    """
    # 将开始和结束日期时间转换为pandas的Timestamp对象
    start = pd.to_datetime(start_datetime)
    end = pd.to_datetime(end_datetime)
    
    # 生成日期时间范围
    datetime_range = pd.date_range(start=start, end=end, freq='T')
    
    # 排除周末
    workdays = datetime_range[datetime_range.weekday < 5]
    
    if holidays:
        # 将自定义节假日转换为日期时间格式
        holidays = pd.to_datetime(holidays)
        
        # 排除自定义节假日
        workdays = workdays[~workdays.isin(holidays)]
    
    # 计算工作时间数量,以分钟为单位
    worktime_minutes = len(workdays)
    
    return worktime_minutes


收藏
全部回答1
最新
发布回答
回答