中文日期描述(今天,明天,后天,下周一,下星期五~~~)转标准日期
评论
收藏

中文日期描述(今天,明天,后天,下周一,下星期五~~~)转标准日期

经验分享
K2022
2024-01-25 20:05·浏览量:618
K2022
影刀认证工程师
发布于 2024-01-25 20:04更新于 2024-01-25 20:05618浏览

代码实现:

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

import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
import datetime
import calendar

# """用来处理这周或者下周的格式的模块"""
def deal_weektime(today, oneday, time):
    if today.weekday()==0:
        today += oneday
    if '这' in time:
        while today.weekday() != 0:
            today -= oneday
    if '下' in time:
        while today.weekday() != 0:
            today += oneday
    return today


# """用来处理中文日期,例如三月五号格式的模块"""
def deal_chinese_date(currentYear, month, day):
    month_digit = 0
    day_digit = 0
    ch_date_dict = {'一': 1, '二': 2, '三': 3, '四': 4, '五': 5, '六': 6, '七': 7, '八': 8, '九': 9, '十': 10}
    if len(month) > 1:
        ten, single = month[:-1], month[-1]
        month_digit = ch_date_dict.get(ten) + ch_date_dict.get(single)
    elif len(month) == 1:
        month_digit = ch_date_dict.get(month)
    if len(day) == 1:
        day_digit = ch_date_dict.get(day)
    elif len(day) > 1:
        if day.startswith('十'):
            ten, single = day[:-1], day[-1]
            day_digit = ch_date_dict.get(ten) + ch_date_dict.get(single)
        elif day.startswith('二'):
            if len(day) == 2:
                day_digit = 20
            else:
                single = day[-1]
                day_digit = 20 + ch_date_dict.get(single)
        elif day.startswith('三'):
            if len(day) == 2:
                day_digit = 30
            else:
                single = day[-1]
                day_digit = 30 + ch_date_dict.get(single)
    str_time =  "{}-{}-{}".format(currentYear, month_digit, day_digit)
    return str(datetime.datetime.strptime(str_time, '%Y-%m-%d').date())


def chnlp2datetime(datetime_str):
    """
    处理日期
    :param datetime_str:
    :return str:
    """
    m_n = None
    today = datetime.date.today()
    currentYear = datetime.datetime.now().year

	# """以下处理一月二十五号 或者1月25日 两种格式的日期"""
    if '月' in datetime_str and ('日' in datetime_str or '号' in datetime_str):
        b = datetime_str.split('月')
        month, day = b[0], b[-1][:-1]
        if datetime_str.isalpha():
            return deal_chinese_date(currentYear, month,day)
        if month.isdigit() and day.isdigit():
            str_time  = "{}-{}-{}".format(currentYear, int(month), int(day))
            return str(datetime.datetime.strptime(str_time, '%Y-%m-%d').date())

	# """处理今天,明天,后天,等格式的日期"""
    if datetime_str in ['今天', '现在']:
        return str(today)
    oneday = datetime.timedelta(days=1)

    if datetime_str == '昨天':
        return str(today - oneday)
    if datetime_str == '明天':
        return str(today + oneday)
    if datetime_str == '后天':
        return str(today + datetime.timedelta(days=2))
    if datetime_str == '前天':
        return str(today - datetime.timedelta(days=2))
    if datetime_str == '大后天':
        return str(today + datetime.timedelta(days=3))
	
	# """处理周一,周三,周日格式的日期"""
    m1 = calendar.MONDAY
    m2 = calendar.TUESDAY
    m3 = calendar.WEDNESDAY
    m4 = calendar.THURSDAY
    m5 = calendar.FRIDAY
    m6 = calendar.SATURDAY
    m7 = calendar.SUNDAY

    week_dict = {'一': m1, '二': m2, '三': m3, '四': m4, '五': m5, '六': m6, '日': m7, '末': m6, '天': m7}
    for num in ['一', '二', '三', '四', '五', '六', '日', '末', '天']:
        if num in datetime_str:
            m_n = week_dict.get(num)
    if m_n is not None:
    	# """处理这周三还是下周三的格式的日期"""
        today = deal_weektime(today, oneday, datetime_str)
        while today.weekday() != m_n:
            today += oneday
        return str(today)
    return str(today)


def main(args):
    pass



效果演示:


使用案例参考

获取不到钉钉群待办的时间的颜色值吗,想用这个颜色只来区分是否逾期

收藏3
全部评论1
最新
发布评论
评论