Skip to main content

中式日期时间库,附带数字汉字化功能。

Project description

简易 Python 中式日期时间库

简介

一个简单小巧的轻量级中式日期时间库,支持农历公历互相转换,支持时辰刻数的时间表达转换,支持整数汉字化。

用法

  1. 农历与公历
from zhDateTime import DateTime,zhDateTime

# 利用DateTime类创建公历日期
solar_date = DateTime(2020,5,20)
# 利用to_lunar函数转换为农历日期
lunar_date = solar.to_lunar()

# 利用zhDateTime类创建农历日期
date_lunar = zhDateTime(2024,3,False,13)    # 此处之False示意是否为闰月
# 利用to_solar函数转换为公历日期
date_solar = date_lunar.to_solar()


# 也可以通过各自的类函数进行自主创建
a_solar_date = DateTime.from_lunar(2024,3,False,13)
a_lunar_date = zhDateTime.from_solar(2020,5,20)

# DateTime 类是增强型的 datetime.datetime 类,因此可以用相同的方式使用后者的函数
b_solar_datetime = DateTime.now()
b_lunar_datetime = b_solar_datetime.to_lunar()

# zhDateTime类可以进行汉字化输出
print(b_lunar_datetime.hanzify())
# 输出应类似 二〇二四 甲辰龙年三月十三日 午时 零十四分三秒九二 余十九微七十八纤
# 也可以分日期和时间输出不同部分
print(b_lunar_datetime.date_hanzify())
# 类似 二〇二四 甲辰龙年三月十二日
print(b_lunar_datetime.time_hanzify())
# 类似 午时三刻 又一分三十秒三九 余五十五微六十纤

# 汉字化的日期和时间函数是支持自定义格式的
print(b_lunar_datetime.date_hanzify("{干支年}{生肖}{月份}月"))
# 类似 甲辰龙年三月
print(b_lunar_datetime.time_hanzify("{地支时}{刻} {分}{秒}{忽}"))
# 类似 午时三刻 又一分三十秒三九
# 具体可用的格式参数请详见函数文档


# 此二类者,皆可己为加减
print(
    (zhDateTime(2024,3,False,12) + (DateTime.now() - DateTime(2024,3,1)))
    - (DateTime.now().to_lunar() - zhDateTime(2023,2,False,1))
)
# 输出应为zhDateTime类,类似 农历 2023年3月22日 0时4刻0分0秒0
  1. 汉字数字表示法
# 对整数进行汉字分组

# 分离各个单位,不进行其他处理
from zhDateTime import int_group
print(int_group(1010045760500200000000026410400044640400000002))
# 应为 [10, '载', 1004, '正', 5760, '涧', 5002, '沟', 0, '穰', 0, '秭', 264, '垓', 1040, '京', 44, '兆', 6404, ' 亿', 0, '万', 2]

# 分离单位的同时,包括中间的“零”
from zhDateTime import int_group_seperated
print(int_group_seperated(1010045760500200000000026410400044640400000002))
# 应为 [10, '载', 1004, '正', 5760, '涧', 5002, '沟', '零', 264, '垓', 1040, '京', '零', 44, '兆', 6404, '亿', ' 零', 2]

# 输出分离后的字符串,包括中间的“零”
from zhDateTime import int_2_grouped_han_str
print(int_2_grouped_han_str(1010045760500200000000026410400044640400000002))
# 应为 10载1004正5760涧5002沟零264垓1040京零44兆6404亿零2


# 四位以内整数的汉字化读法
from zhDateTime import lkint_hanzify
lkint_hanzify(1534)
# 一千五百三十四
lkint_hanzify(1020)
# 一千零二十
lkint_hanzify(29)
# 廿九

# 常规整数汉字化读法
from zhDateTime import int_hanzify
int_hanzify(1010045760500200000000026410400044640400000002)
# 十载一千零四正五千七百六十涧五千零二沟零二百六十四垓一千零四十京零四十四兆六千四百零四亿零二
  1. 日期相关数据
# 就这四个函数,,,自己看一下函数文档吧
from zhDateTime import (
    shichen_ke_2_hour_minute,
    hour_minute_2_shichen_ke,
    get_lunar_month_list,
    get_lunar_new_year,
    verify_lunar_date,
)

参标

  1. 本库的农历日期计算方法参照《中华人民共和国国家标准 GB/T 33661—2017〈农历的编算和颁行〉》
  2. 本库的时刻表达方法参照时辰_百度百科中,唐以后的“十二时辰制”,此制是目前最为广为人知的时辰表示方法;对于宋以后的“二十四时辰”制,本库虽有提供相关内容,但并不实际采用
  3. 本库中的拼音参照《中华人民共和国国家标准 GB/T 16159-2012〈汉语拼音正词法基本规则〉》
  4. 本库中的汉字大数表示方法,参照徐岳.数术记遗.《周髀算经》,汉
  5. 本库中的汉字数字表示方法参照读数法_百度百科中,十进制读数法的相关内容
  6. 本库的汉字数字用法参照《中华人民共和国国家标准 GB/T 15835-2011〈出版物上数字用法的规定〉》

致谢

  1. 感谢香港天文台公历与农历日期对照表提供的自公历 1901 年至公历 2100 年的农历日期对照数据
  2. 感谢zhdate项目启发,以至于作者决定开发此项目,作者曾去那贡献过代码(awa)
  3. 感谢cnlunar 相关代码为存储日期的方式样式提供启发
  4. 感谢中国哲学书电子化计划为古代文献的查考提供便捷实用的途径

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zhdatetime-1.1.1.tar.gz (21.6 kB view hashes)

Uploaded Source

Built Distribution

zhDateTime-1.1.1-py3-none-any.whl (20.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page