Python的datetime模块的Jalali日期时间绑定
项目描述
jdatetime是Python的datetime模块的Jalali实现
状态
安装
pip安装jdatetime
文档
此模块完全遵循Python标准datetime模块的方法 https://docs.pythonlang.cn/release/3.7.1/library/datetime.html
这些方法也添加到jdatetime.date和jdatetime.datetime
fromgregorian(**kw)
Convert gregorian to jalali and return jdatetime.date
jdatetime.date.fromgregorian(day=X,month=X,year=X)
jdatetime.date.fromgregorian(date=datetime.date)
jdatetime.datetime.fromgregorian(datetime=datetime.datetime)
togregorian(self)
Convert current jalali date to gregorian and return datetime.date
isleap(self)
check if year is leap year
algortim is based on http://en.wikipedia.org/wiki/Leap_year
示例
>>> import jdatetime
>>> jdatetime.datetime.now()
jdatetime.datetime(1394, 12, 4, 8, 37, 31, 855729)
>>> jdatetime.date.today()
jdatetime.date(1394, 12, 4)
区域设置
为了获取波斯语的日期字符串,您需要将区域设置为jdatetime.FA_LOCALE。区域可以在实例化date/datetime实例时明确指定,或设置默认区域。
实例区域是 仅命名参数
import jdatetime
fa_date = jdatetime.date(1397, 4, 23, locale=jdatetime.FA_LOCALE)
fa_datetime = jdatetime.datetime(1397, 4, 23, 11, 40, 30, locale=jdatetime.FA_LOCALE)
date和datetime实例提供aslocale()方法,用于返回具有相同时间戳的实例副本,但在不同的区域。
默认区域
可以设置默认区域,因此之后创建的所有新实例都将使用所需的区域,除非明确指定其他区域。
>>> import locale
>>> import jdatetime
>> jdatetime.datetime.now().strftime("%a, %d %b %Y %H:%M:%S")
u'Wed, 08 Ord 1395 20:47:32'
>>> locale.setlocale(locale.LC_ALL, jdatetime.FA_LOCALE)
'fa_IR'
>>> jdatetime.datetime.now().strftime("%a, %d %b %Y %H:%M:%S")
u'\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647, 08 \u0627\u0631\u062f\u06cc\u0628\u0647\u0634\u062a 1395 20:47:56'
如果您的需求要求在同一进程内支持不同的区域,可以按线程设置默认区域。在每线程中创建的新date和datetime实例将默认使用指定的区域。这支持Python线程和greenlets。
import jdatetime
jdatetime.set_locale(jdatetime.FA_LOCALE)
jdatetime.datetime.now().strftime('%A %B')
# u'\u062f\u0648\u0634\u0646\u0628\u0647 \u062e\u0631\u062f\u0627\u062f'
开发
您可以通过从GitHub分叉此项目并发送pull请求来为此项目做出贡献。
首先 分支 仓库,然后克隆它
$ git clone git@github.com:<you>/python-jalali.git
在提交之前,您可以使用 tox 运行所有上述测试,针对所有支持的 Python 版本。您需要先安装 tox
$ pip install tox
然后您可以运行所有测试
$ tox
如果您希望将测试限制在特定的 Python 版本,您可以参数化 tox 运行
$ tox -e py39
发布步骤
在 setup.py 和 jdatetime/__init__.py 中增加版本号。我们使用语义版本控制。
在 CHANGELOG.md 中添加发布说明
提交更改并推送。创建 PR
PR 合并后,创建一个带有类似 v<版本> 标签名的发布
Github Action 会创建软件包并将其部署到 pypi。