跳转到主要内容

Python的datetime模块的Jalali日期时间绑定

项目描述

jdatetime是Python的datetime模块的Jalali实现

状态

https://github.com/slashmili/python-jalali/workflows/Tests/badge.svg?branch=main https://ci.appveyor.com/api/projects/status/ge5rk703ydx649a6?svg=true https://img.shields.io/pypi/v/jdatetime.svg https://img.shields.io/pypi/pyversions/jdatetime.svg

安装

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)

datedatetime实例提供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'

如果您的需求要求在同一进程内支持不同的区域,可以按线程设置默认区域。在每线程中创建的新datedatetime实例将默认使用指定的区域。这支持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.pyjdatetime/__init__.py 中增加版本号。我们使用语义版本控制。

  • 在 CHANGELOG.md 中添加发布说明

  • 提交更改并推送。创建 PR

  • PR 合并后,创建一个带有类似 v<版本> 标签名的发布

  • Github Action 会创建软件包并将其部署到 pypi。

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面