wapjsx 发表于 2023-12-22 16:43

生成中文格式的日期

在实际工作中,也许大家需要用到中文日期,不知道你们是怎么处理的???


自己动手 丰衣足食。


import time


def myzhongwendate(arg_date='0000-00-00'):
    if arg_date == '0000-00-00':
      mydate = time.strftime('%Y-%m-%d', time.localtime())   # 获取当前的日期,返回字符型数据,如:"2023-12-22"
    else:
      mydate = arg_date
    mydict_a = {'0': '〇', '1': '一', '2': '二', '3': '三', '4': "四",
                '5': '五', '6': '六', '7': '七', '8': '八', '9': '九', }
    # 定义一个字典 mydict_a ,用来处理年份
    _my_return_text = ''
    # 定义一个临时的字符型变量,用来存放生成的日期
    for i in mydate.split('-'):
      _my_return_text += mydict_a
    # 年份中各个数字进行处理
    _my_return_text += '年'
    # 处理年份结束。
    mydict_shiwei = {'0': '', '1': '十', '2': '二十', '3': '三十'}
    # 十位数的处理方式
    mydict_gewei = {'0': '', '1': '一', '2': '二', '3': '三', '4': "四",
                  '5': '五', '6': '六', '7': '七', '8': '八', '9': '九', }
    # 个位数的处理方式
    _my_return_text = _my_return_text + mydict_shiwei] + mydict_gewei[
      mydate.split('-')] + "月"
    # 处理年月完成
    _my_return_text = _my_return_text + mydict_shiwei] + mydict_gewei[
      mydate.split('-')] + "日"
    # 处理年月日完成
    return _my_return_text

if __name__ == "__main__":
    print(myzhongwendate('2001-01-28'))   # 指定时间生成 中文日期
    # 输出结果: 二〇〇一年一月二十八日
    print(myzhongwendate())               # 默认生成当天的中文日期
    # 输出结果: 二〇二三年十二月二十二日

qfxldhw 发表于 2023-12-22 18:23

本帖最后由 苏紫方璇 于 2023-12-24 22:13 编辑

def arabic_to_chinese_number(number):
    """将阿拉伯数字转换为中文数字"""
    chinese_numerals = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"]
    return ''.join(chinese_numerals for digit in str(number))

def chinese_date_format(year, month, day):
    """将年、月、日转换为完全的中文日期格式"""
    # 年份转换
    year_chinese = arabic_to_chinese_number(year) + "年"

    # 月份转换,10以上和10以下的月份处理方式略有不同
    if month < 10:
      month_chinese = arabic_to_chinese_number(month) + "月"
    else:
      month_chinese = "十" if month == 10 else "十" + arabic_to_chinese_number(month % 10) + "月"

    # 日的转换,分为1-9、10、11-19和20-31三种情况
    if day < 10:
      day_chinese = arabic_to_chinese_number(day) + "日"
    elif day == 10:
      day_chinese = "十日"
    elif day < 20:
      day_chinese = "十" + arabic_to_chinese_number(day % 10) + "日"
    else:
      day_chinese = arabic_to_chinese_number(day // 10) + "十" + arabic_to_chinese_number(day % 10) + "日" if day % 10 != 0 else arabic_to_chinese_number(day // 10) + "十日"

    return year_chinese + month_chinese + day_chinese

# 使用当前日期来测试函数
current_year = now.year
current_month = now.month
current_day = now.day
chinese_date = chinese_date_format(current_year, current_month, current_day)

chinese_date()

EnterpriseSolu 发表于 2023-12-22 23:19

excel就有这个功能啊,我一开始也想用代码解决,后来想想,VBA的适用面更广泛,于是琢磨VBA的写法,OFFICE都可以用,这样更受欢迎

1045837055lucy 发表于 2023-12-22 17:06

过些日子清闲了也学学,看现在比较流行

ww886 发表于 2023-12-22 17:06

学习了,谢谢

kenxy 发表于 2023-12-22 17:16

我是直接手写的中文日期

jz4128 发表于 2023-12-22 18:45

虽然用不上,但是学学也挺有意思

3969 发表于 2023-12-22 20:05

学习了,对我来说作用不是太大:lol

li15103428 发表于 2023-12-22 20:10

学习了,谢谢

52soft 发表于 2023-12-22 20:11

qfxldhw 发表于 2023-12-22 18:23
def arabic_to_chinese_number(number):
    """将阿拉伯数字转换为中文数字"""
    chinese_numerals =...

报错NameError: name 'now' is not defined. Did you mean: 'pow'?

CQGaxm 发表于 2023-12-22 20:32

FormatStr 格式化字符串格式不是更简单
页: [1] 2
查看完整版本: 生成中文格式的日期