Jalali日期和日期时间以及其他工具
persiantools的Python项目详细描述
波斯酚
jalali(shamsi)日期和日期时间(基于python日期时间模块)
- 将jalali转换为公历日期/日期时间,反之亦然
- 支持比较运算符和算术运算符,如
+
、-
、==
、>=
- 支持时区
将阿拉伯语和波斯语字符/数字相互转换
安装软件包
pip install persiantools
如何使用
日期
>>> from persiantools.jdatetime import JalaliDate >>> import datetime >>> JalaliDate.today() JalaliDate(1395, 4, 18, Jomeh) >>> JalaliDate(1369, 7, 1) JalaliDate(1369, 7, 1, Yekshanbeh) >>> JalaliDate(datetime.date(1990, 9, 23)) # Gregorian to Jalali JalaliDate(1369, 7, 1, Yekshanbeh) >>> JalaliDate.to_jalali(2013, 9, 16) # Gregorian to Jalali JalaliDate(1392, 6, 25, Doshanbeh) >>> JalaliDate(1392, 6, 25).to_gregorian() # Jalali to Gregorian datetime.date(2013, 9, 16) >>> JalaliDate.fromtimestamp(578707200) # Timestamp to Jalali JalaliDate(1367, 2, 14, Chaharshanbeh)
日期时间
>>> from persiantools.jdatetime import JalaliDateTime >>> import datetime, pytz >>> JalaliDateTime.now() JalaliDateTime(1395, 4, 18, 1, 43, 24, 720505) >>> JalaliDateTime.now().to_gregorian() # Jalali to Gregorian datetime.datetime(2016, 7, 8, 1, 43, 24, 720505) >>> JalaliDateTime.to_jalali(datetime.datetime(1988, 5, 4, 14, 0, 0, 0)) # Gregorian to Jalali JalaliDateTime(1367, 2, 14, 14, 0) >>> JalaliDateTime.fromtimestamp(578723400, pytz.timezone("Asia/Tehran")) # Timestamp to Jalali JalaliDateTime(1367, 2, 14, 8, 0, tzinfo=<DstTzInfo 'Asia/Tehran' +0330+3:30:00 STD>) >>> JalaliDateTime.now(pytz.utc) JalaliDateTime(1395, 4, 17, 21, 23, 53, 474618, tzinfo=<UTC>)
格式
基于pythonstrftime()
行为
>>> from persiantools.jdatetime import JalaliDate, JalaliDateTime >>> import pytz >>> JalaliDate(1367, 2, 14).isoformat() '1367-02-14' >>> JalaliDate(1395, 3, 1).strftime("%Y/%m/%d") '1395/03/01' >>> JalaliDateTime(1369, 7, 1, 14, 0, 10, 0, pytz.utc).strftime("%c") 'Yekshanbeh 01 Mehr 1369 14:00:10' >>> JalaliDateTime.now(pytz.utc).strftime("%I:%M:%S.%f %p %z %Z") '01:49:22.518523 PM +0000 UTC'
数字/字符转换器
>>> from persiantools import characters, digits >>> digits.en_to_fa("0987654321") '۰۹۸۷۶۵۴۳۲۱' >>> digits.ar_to_fa("٠٩٨٧٦٥٤٣٢١") # or digits.ar_to_fa(u"٠٩٨٧٦٥٤٣٢١") '۰۹۸۷۶۵۴۳۲۱' >>> digits.fa_to_en("۰۹۸۷۶۵۴۳۲۱") '0987654321' >>> digits.fa_to_ar("۰۹۸۷۶۵۴۳۲۱") '٠٩٨٧٦٥٤٣٢١' >>> characters.ar_to_fa("كيك") 'کیک'
操作员
>>> from persiantools.jdatetime import JalaliDate, JalaliDateTime >>> import datetime >>> JalaliDate(1367, 2, 14) == JalaliDate(datetime.date(1988, 5, 4)) True >>> JalaliDateTime(1367, 2, 14, 4, 30) >= JalaliDateTime(1369, 7, 1, 1, 0) False >>> JalaliDate(1367, 2, 14) == datetime.date(1988, 5, 4) True >>> JalaliDate(1395, 2, 14) + datetime.timedelta(days=38) JalaliDate(1395, 3, 21, Jomeh) >>> JalaliDateTime(1395, 12, 30) - JalaliDateTime(1395, 1, 1) datetime.timedelta(365)
序列化和反序列化
>>> from persiantools.jdatetime import JalaliDate >>> import pickle >>> # Serializing >>> file = open("save.p", "wb") >>> pickle.dump(JalaliDate(1367, 2, 14), file) >>> file.close() >>> # de-serializing >>> file = open("save.p", "rb") >>> jalali = pickle.load(file) >>> file.close() >>> jalali JalaliDate(1367, 2, 14, Chaharshanbeh)