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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file zhdatetime-1.1.1.tar.gz.

File metadata

  • Download URL: zhdatetime-1.1.1.tar.gz
  • Upload date:
  • Size: 21.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.11

File hashes

Hashes for zhdatetime-1.1.1.tar.gz
Algorithm Hash digest
SHA256 49eef9df8f16ac008480a34a80f30e83dc881f1afbbfac2d478e385fae84754d
MD5 31bba47aa51d3d98868e3c0d14f3ed91
BLAKE2b-256 ce45b9996cba3a9112e475844a75fe5a4c51f14eca446dddd02a2701a88d54d9

See more details on using hashes here.

File details

Details for the file zhDateTime-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: zhDateTime-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 20.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.11

File hashes

Hashes for zhDateTime-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5b987413ab8853ad899a7bb016321c918399d732325219a33f053d6dd158083a
MD5 627095acca7de50f3bcfdac464f30b40
BLAKE2b-256 15da00310154f4b1a96ad8ca4b8fed7942f6828bfb762e542dc705f649c43eca

See more details on using hashes here.

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