Skip to main content

Awesome time conversion handling with support for chaining operations.

Project description

1 NbTime 介绍

NbTime 是oop面向对象开发的爽快的日期时间操作类
NbTime 支持无限链式操作来处理时间,
(因为是oop所以易用程度远远的暴击面向过程python工程师写的time_utils.py里面写几百个独立的操作时间的面向过程函数)

NbTime 入参支持字符串 时间戳 datetime对象 NbTime对象自身
NbTime 非常轻松支持时区转化
Nbtime 内置属性 datetime对象,兼容性好

1.1 安装

pip install nb_time

2 NbTime 时间值传参用法

2.1 NbTime 不传参,就是当前时间

>>> from nb_time import NbTime
>>> NbTime()                   
<NbTime [2024-02-29 17:51:14 +0800]>

2.2 NbTime 传参datetime对象

>>> NbTime(datetime.datetime.now())
<NbTime [2024-02-29 17:56:43 +0800]>

2.3 NbTime 传参时间戳

>>> NbTime(1709192429)
<NbTime [2024-02-29 15:40:29 +0800]>

2.4 NbTime 传参字符串,可以对字符串设置时区,例如把东七区的时间字符串转化成东8区的格式.

>>> NbTime('2024-02-26 15:58:21',datetime_formatter=NbTime.FORMATTER_DATETIME,time_zone=NbTime.TIMEZONE_EASTERN_7).to_tz('UTC+8')
<NbTime [2024-02-26 16:58:21 +0800]>

3 NbTime 链式计算时间

求3天1小时10分钟后的时间,入参支持正数和负数

>>> NbTime().shift(hours=1,minutes=10).shift(days=3)
<NbTime [2024-03-03 19:02:49 +0800]>

NbTime入参本身支持无限嵌套NbTime对象

NbTime(NbTime(NbTime(NbTime())))
<NbTime [2024-02-29 18:39:09]>


为什么 NbTime支持入参是自身类型,例如你可以方便的转时区和转字符串格式化
例如0时区的2024-02-29 07:40:34,你要转化成8时区的带毫秒带时区的时间字符串,
>>> from nb_time import NbTime                                                                                                    
>>> NbTime(NbTime('2024-02-29 07:40:34', time_zone='UTC+0', datetime_formatter=NbTime.FORMATTER_DATETIME_NO_ZONE),
...                time_zone='UTC+8', datetime_formatter=NbTime.FORMATTER_MILLISECOND).datetime_str
'2024-02-29 15:40:34.000000 +0800'


3 NbTime 时区设置

3.1 NbTime 实例化时候设置时区

实例化时候分别设置东7区和0时区

>>> NbTime(time_zone='UTC+7')
<NbTime [2024-02-29 17:05:08 +0700]>
>>> NbTime(time_zone='UTC+0') 
<NbTime [2024-02-29 10:05:11 +0000]>

3.2 全局设置时区

用户不传递时区时候,默认就是操作系统时区,如果用户想统一设置时区

例如用户统一设置东8区,以后实例化就不用每次亲自传递东八区.

NbTime.set_default_time_zone('UTC+8')

4 设置时间字符串格式化

4.1 NBTime实例化时候设置时间字符串格式

用户不想要毫秒时间字符串

>>> NbTime(datetime_formatter=NbTime.FORMATTER_DATETIME)    
<NbTime [2024-02-29 18:10:57 +0800]>

用户不想要字符串带时区

>>> NbTime(datetime_formatter=NbTime.FORMATTER_DATETIME_NO_ZONE) 
<NbTime [2024-02-29 18:12:18]>

4.2 NBTime全局设置字符串格式

NbTime.set_default_formatter 可以全局设置时间格式字符串,就不需要每次都传递格式

>>> NbTime.set_default_formatter(NbTime.FORMATTER_DATETIME_NO_ZONE)
>>> NbTime()
<NbTime [2024-02-29 18:14:38]>

5 NbTime 对象内置的成员属性

见下面的交互,NbTime类型对象有非常便捷的各种成员变量,

datetime  类型datetime.datetime类型的时间对象,这个很方便和内置类型关联起来
time_zone_obj 时区
datetime_str 日期时间字符串
time_str 时间字符串
date_str 日期字符串
timestamp  时间戳秒
timestamp_millisecond 时间戳毫秒
today_zero_timestamp 当天凌晨的时间戳
>>> nbt=NbTime()
>>> nbt.datetime
datetime.datetime(2024, 2, 29, 18, 16, 23, 541415, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)

>>> nbt.time_zone_obj
<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>

>>> nbt.datetime_str
'2024-02-29 18:16:23'

>>> nbt.time_str
'18:16:23'

>>> nbt.date_str
'2024-02-29'

>>> nbt.timestamp
1709201783.541415

>>> nbt.timestamp_millisecond
1709201783541.415

>>> nbt.today_zero_timestamp
1709136000

6 NbTime的方法

get_str_by_specify_formatter 方法转化成任意字符串格式
shift 是计算生成新的NbTime对象,支持无限连续链式操作

求3天1小时10分钟后的时间,入参支持正数和负数
>>> NbTime().shift(hours=1,minutes=10).shift(days=3)
<NbTime [2024-03-03 19:02:49 +0800]>
to_tz 是生成新的时区的NbTime对象,把NbTime对象转化成另一个时区.

一个东7区的时间:
>>> NbTime('2024-02-26 15:58:21',datetime_formatter=NbTime.FORMATTER_DATETIME,time_zone=NbTime.TIMEZONE_EASTERN_7)
<NbTime [2024-02-26 15:58:21 +0700]>

那这个东7区的时间转化成东8区的时间:
>>> NbTime('2024-02-26 15:58:21',datetime_formatter=NbTime.FORMATTER_DATETIME,time_zone=NbTime.TIMEZONE_EASTERN_7).to_tz('UTC+8')
<NbTime [2024-02-26 16:58:21 +0800]>

7 NbTime总结

总结就是 NbTime 的入参接受所有类型,NbTime支持链式调用,Nbtime方便支持时区和转化,所以NbTime操作时间,远远暴击使用datetime和三方arrow包

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

nb_time-0.3.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

nb_time-0.3-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file nb_time-0.3.tar.gz.

File metadata

  • Download URL: nb_time-0.3.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.9

File hashes

Hashes for nb_time-0.3.tar.gz
Algorithm Hash digest
SHA256 0564bd57ec2db7ecd8c4be605cd4ba26d15e5169bd654645861d9cace25601b8
MD5 af7a3262de42b884b1048bd9a178ca45
BLAKE2b-256 e0bb0ed72285653d7668d3b4786dcda293deca495c02b5854db9c351d03a612a

See more details on using hashes here.

File details

Details for the file nb_time-0.3-py3-none-any.whl.

File metadata

  • Download URL: nb_time-0.3-py3-none-any.whl
  • Upload date:
  • Size: 6.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.9

File hashes

Hashes for nb_time-0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e5a2260ee7838bad6eee34041941c06d462f75df906a00e4941dbe59a19d5429
MD5 5128367640ac745fbc0f2518245cfe40
BLAKE2b-256 ca94cd99b884c610e8ff86e507baf25c61fa6348142bae530947cdc6159deb12

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