nb-time


Namenb-time JSON
Version 1.8 PyPI version JSON
download
home_pagehttps://github.com/ydf0509/nb_time
SummaryAwesome time conversion handling with support for chaining operations.
upload_time2024-04-25 03:33:36
maintainerydf
docs_urlNone
authorbfzs
requires_pythonNone
licenseBSD License
keywords arrow time datetime time_utils
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            

# 1 NbTime 介绍

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

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

NbTime操作时间,远远暴击使用datetime和三方arrow包,
远远暴击用户在 utils.time_utils.py文件中写几百个孤立的面向过程操作时间的函数.
```

## 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]>
```

## 2.5 NbTime 传参 DateTimeValue类型对象
```
>>> from nb_time import DateTimeValue
>>> NbTime(DateTimeValue(year=2022,month=5,day=9,hour=6),time_zone='UTC+7')
<NbTime [2022-05-09 06:00:00 +0700]>

```

## 2.6 NbTime传参 NbTime对象

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 链式计算时间

NbTime().shift方法返回的对象仍然是Nbtime类型。
因为Nbtime对象本身具有很多好用的属性和方法,所以使用NbTime作为时间转化的中转对象,比使用datetime作为中转对象方便使用很多。


求3天1小时10分钟后的时间,入参支持正数和负数
```
>>> NbTime().shift(hours=1,minutes=10).shift(days=3)
<NbTime [2024-03-03 19:02:49 +0800]>
```

求当前时间1天之前的时间戳
```commandline
>>> NbTime().shift(days=-1).timestamp
1709290123.409756

```







# 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:08 +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的方法

## 6.1 get_str 方法转化成任意字符串格式
```
例如获取今天的年月日,中间不要带 - 
>>> NbTime().get_str('%Y%m%d')
20240301
```

## 6.2 shift 是计算生成新的NbTime对象,支持无限连续链式操作
```
求3天1小时10分钟后的时间,入参支持正数和负数
>>> NbTime().shift(hours=1,minutes=10).shift(days=3)
<NbTime [2024-03-03 19:02:49 +0800]>
```

## 6.3 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]>
```
## 6.4 NbTime 对象 支持 > < = 比较
```
NbTime 实现了 __gt__  __lt__  __eq__ 方法,可以直接比较大小

>>> NbTime() > NbTime('2023-05-06 01:01:01')                                            
True
>>> NbTime() > NbTime('2025-05-06 01:01:01') 
False

```

# 7.用户自定义继承 NbTime 类

因为 nb_time 是 oop面向对象开发的,所以可以继承,
如果是面向过程编程,使用模块级 + 函数的方式来编程,先改变模块的某个全局变量或者函数逻辑,只能使用猴子补丁技术,而且模块天然还是个单例,不适合多次猴子补丁
面向对象就是有优势.


## 7.1 例如用户想使用 UTC 0时区,但是不想频繁传递 时区入参,可以使用 nb_time的  自带的UtcNbTime 类,或者用户手写这个类自己继承NbTime

```python
class UtcNbTime(NbTime):
    default_time_zone = NbTime.TIMEZONE_UTC

# 使用的时候
UtcNbTime()   
```


## 7.2 例如 用户想使用上海时区,并且默认使用不带时区的时间字符串格式化
```python
class ShanghaiNbTime(NbTime):
    default_time_zone = NbTime.TIMEZONE_ASIA_SHANGHAI
    default_formatter = NbTime.FORMATTER_DATETIME_NO_ZONE

# 使用的时候
ShanghaiNbTime()  
```

## 7.3 数据分析,常用的时间也可以加上来

```python
class PopularNbTime(NbTime):
    @property
    def ago_1_days(self):
        return self.shift(days=-1)

    @property
    def ago_7_days(self):
        return self.shift(days=-7)

    @property
    def ago_30_days(self):
        return self.shift(days=-30)

    @property
    def ago_180_days(self):
        return self.shift(days=-180)
```



# 8 NbTime总结

```
总结就是 NbTime 的入参接受所有类型,NbTime支持链式调用,Nbtime方便支持时区,Nbtime方便操作时间转化,
所以NbTime操作时间,远远暴击使用datetime和三方arrow包,
远远暴击用户在 utils.time_utils.py文件中写几百个孤立的面向过程操作时间的函数.
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/ydf0509/nb_time",
    "name": "nb-time",
    "maintainer": "ydf",
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": "ydf0509@sohu.com",
    "keywords": "arrow, time, datetime, time_utils",
    "author": "bfzs",
    "author_email": "ydf0509@sohu.com",
    "download_url": "https://files.pythonhosted.org/packages/71/83/d9eed6e32ab28851e9018c825a1ac8ee89cdd8db271e8145dbb37df0392f/nb_time-1.8.tar.gz",
    "platform": "all",
    "description": "\r\n\r\n# 1 NbTime \u4ecb\u7ecd\r\n\r\n```\r\nNbTime \u662foop\u9762\u5411\u5bf9\u8c61\u5f00\u53d1\u7684\u723d\u5feb\u7684\u65e5\u671f\u65f6\u95f4\u64cd\u4f5c\u7c7b\r\nNbTime \u652f\u6301\u65e0\u9650\u94fe\u5f0f\u64cd\u4f5c\u6765\u5904\u7406\u65f6\u95f4,\r\n(\u56e0\u4e3a\u662foop\u6240\u4ee5\u6613\u7528\u7a0b\u5ea6\u8fdc\u8fdc\u7684\u66b4\u51fb\u9762\u5411\u8fc7\u7a0bpython\u5de5\u7a0b\u5e08\u5199\u7684time_utils.py\u91cc\u9762\r\n\u5199\u51e0\u767e\u4e2a\u72ec\u7acb\u7684\u64cd\u4f5c\u65f6\u95f4\u7684\u9762\u5411\u8fc7\u7a0b\u51fd\u6570)\r\n\r\nNbTime \u5165\u53c2\u652f\u6301 None \u5b57\u7b26\u4e32 \u65f6\u95f4\u6233 datetime\u5bf9\u8c61 NbTime\u5bf9\u8c61\u81ea\u8eab\r\nNbTime \u975e\u5e38\u8f7b\u677e\u652f\u6301\u65f6\u533a\u8f6c\u5316\r\nNbtime \u5185\u7f6e\u5c5e\u6027 datetime\u5bf9\u8c61,\u517c\u5bb9\u6027\u597d\r\n\r\nNbTime\u64cd\u4f5c\u65f6\u95f4,\u8fdc\u8fdc\u66b4\u51fb\u4f7f\u7528datetime\u548c\u4e09\u65b9arrow\u5305,\r\n\u8fdc\u8fdc\u66b4\u51fb\u7528\u6237\u5728 utils.time_utils.py\u6587\u4ef6\u4e2d\u5199\u51e0\u767e\u4e2a\u5b64\u7acb\u7684\u9762\u5411\u8fc7\u7a0b\u64cd\u4f5c\u65f6\u95f4\u7684\u51fd\u6570.\r\n```\r\n\r\n## 1.1 \u5b89\u88c5 \r\n\r\npip install nb_time\r\n\r\n# 2 NbTime \u65f6\u95f4\u503c\u4f20\u53c2\u7528\u6cd5\r\n\r\n## 2.1 NbTime \u4e0d\u4f20\u53c2,\u5c31\u662f\u5f53\u524d\u65f6\u95f4\r\n```\r\n>>> from nb_time import NbTime\r\n>>> NbTime()                   \r\n<NbTime [2024-02-29 17:51:14 +0800]>\r\n```\r\n\r\n## 2.2 NbTime \u4f20\u53c2datetime\u5bf9\u8c61\r\n\r\n```\r\n>>> NbTime(datetime.datetime.now())\r\n<NbTime [2024-02-29 17:56:43 +0800]>\r\n```\r\n\r\n## 2.3 NbTime \u4f20\u53c2\u65f6\u95f4\u6233\r\n```\r\n>>> NbTime(1709192429)\r\n<NbTime [2024-02-29 15:40:29 +0800]>\r\n```\r\n\r\n## 2.4 NbTime \u4f20\u53c2\u5b57\u7b26\u4e32,\u53ef\u4ee5\u5bf9\u5b57\u7b26\u4e32\u8bbe\u7f6e\u65f6\u533a,\u4f8b\u5982\u628a\u4e1c\u4e03\u533a\u7684\u65f6\u95f4\u5b57\u7b26\u4e32\u8f6c\u5316\u6210\u4e1c8\u533a\u7684\u683c\u5f0f.\r\n```\r\n>>> NbTime('2024-02-26 15:58:21',datetime_formatter=NbTime.FORMATTER_DATETIME,time_zone=NbTime.TIMEZONE_EASTERN_7).to_tz('UTC+8')\r\n<NbTime [2024-02-26 16:58:21 +0800]>\r\n```\r\n\r\n## 2.5 NbTime \u4f20\u53c2 DateTimeValue\u7c7b\u578b\u5bf9\u8c61\r\n```\r\n>>> from nb_time import DateTimeValue\r\n>>> NbTime(DateTimeValue(year=2022,month=5,day=9,hour=6),time_zone='UTC+7')\r\n<NbTime [2022-05-09 06:00:00 +0700]>\r\n\r\n```\r\n\r\n## 2.6 NbTime\u4f20\u53c2 NbTime\u5bf9\u8c61\r\n\r\nNbTime\u5165\u53c2\u672c\u8eab\u652f\u6301\u65e0\u9650\u5d4c\u5957NbTime\u5bf9\u8c61\r\n```\r\nNbTime(NbTime(NbTime(NbTime())))\r\n<NbTime [2024-02-29 18:39:09]>\r\n\r\n\r\n\u4e3a\u4ec0\u4e48 NbTime\u652f\u6301\u5165\u53c2\u662f\u81ea\u8eab\u7c7b\u578b,\u4f8b\u5982\u4f60\u53ef\u4ee5\u65b9\u4fbf\u7684\u8f6c\u65f6\u533a\u548c\u8f6c\u5b57\u7b26\u4e32\u683c\u5f0f\u5316\r\n\u4f8b\u59820\u65f6\u533a\u76842024-02-29 07:40:34,\u4f60\u8981\u8f6c\u5316\u62108\u65f6\u533a\u7684\u5e26\u6beb\u79d2\u5e26\u65f6\u533a\u7684\u65f6\u95f4\u5b57\u7b26\u4e32,\r\n>>> from nb_time import NbTime                                                                                                    \r\n>>> NbTime(NbTime('2024-02-29 07:40:34', time_zone='UTC+0', datetime_formatter=NbTime.FORMATTER_DATETIME_NO_ZONE),\r\n...                time_zone='UTC+8', datetime_formatter=NbTime.FORMATTER_MILLISECOND).datetime_str\r\n'2024-02-29 15:40:34.000000 +0800'\r\n```\r\n\r\n# 3 NbTime \u94fe\u5f0f\u8ba1\u7b97\u65f6\u95f4\r\n\r\nNbTime().shift\u65b9\u6cd5\u8fd4\u56de\u7684\u5bf9\u8c61\u4ecd\u7136\u662fNbtime\u7c7b\u578b\u3002\r\n\u56e0\u4e3aNbtime\u5bf9\u8c61\u672c\u8eab\u5177\u6709\u5f88\u591a\u597d\u7528\u7684\u5c5e\u6027\u548c\u65b9\u6cd5\uff0c\u6240\u4ee5\u4f7f\u7528NbTime\u4f5c\u4e3a\u65f6\u95f4\u8f6c\u5316\u7684\u4e2d\u8f6c\u5bf9\u8c61\uff0c\u6bd4\u4f7f\u7528datetime\u4f5c\u4e3a\u4e2d\u8f6c\u5bf9\u8c61\u65b9\u4fbf\u4f7f\u7528\u5f88\u591a\u3002\r\n\r\n\r\n\u6c423\u59291\u5c0f\u65f610\u5206\u949f\u540e\u7684\u65f6\u95f4,\u5165\u53c2\u652f\u6301\u6b63\u6570\u548c\u8d1f\u6570\r\n```\r\n>>> NbTime().shift(hours=1,minutes=10).shift(days=3)\r\n<NbTime [2024-03-03 19:02:49 +0800]>\r\n```\r\n\r\n\u6c42\u5f53\u524d\u65f6\u95f41\u5929\u4e4b\u524d\u7684\u65f6\u95f4\u6233\r\n```commandline\r\n>>> NbTime().shift(days=-1).timestamp\r\n1709290123.409756\r\n\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n# 3 NbTime \u65f6\u533a\u8bbe\u7f6e\r\n\r\n## 3.1 NbTime \u5b9e\u4f8b\u5316\u65f6\u5019\u8bbe\u7f6e\u65f6\u533a\r\n\r\n\u5b9e\u4f8b\u5316\u65f6\u5019\u5206\u522b\u8bbe\u7f6e\u4e1c7\u533a\u548c0\u65f6\u533a\r\n```\r\n>>> NbTime(time_zone='UTC+7')\r\n<NbTime [2024-02-29 17:05:08 +0700]>\r\n>>> NbTime(time_zone='UTC+0') \r\n<NbTime [2024-02-29 10:05:08 +0000]>\r\n```\r\n\r\n## 3.2 \u5168\u5c40\u8bbe\u7f6e\u65f6\u533a\r\n\u7528\u6237\u4e0d\u4f20\u9012\u65f6\u533a\u65f6\u5019,\u9ed8\u8ba4\u5c31\u662f\u64cd\u4f5c\u7cfb\u7edf\u65f6\u533a,\u5982\u679c\u7528\u6237\u60f3\u7edf\u4e00\u8bbe\u7f6e\u65f6\u533a\r\n\r\n\u4f8b\u5982\u7528\u6237\u7edf\u4e00\u8bbe\u7f6e\u4e1c8\u533a,\u4ee5\u540e\u5b9e\u4f8b\u5316\u5c31\u4e0d\u7528\u6bcf\u6b21\u4eb2\u81ea\u4f20\u9012\u4e1c\u516b\u533a.\r\n```\r\nNbTime.set_default_time_zone('UTC+8')\r\n```\r\n\r\n# 4 \u8bbe\u7f6e\u65f6\u95f4\u5b57\u7b26\u4e32\u683c\u5f0f\u5316\r\n\r\n## 4.1 NBTime\u5b9e\u4f8b\u5316\u65f6\u5019\u8bbe\u7f6e\u65f6\u95f4\u5b57\u7b26\u4e32\u683c\u5f0f\r\n\u7528\u6237\u4e0d\u60f3\u8981\u6beb\u79d2\u65f6\u95f4\u5b57\u7b26\u4e32\r\n```\r\n>>> NbTime(datetime_formatter=NbTime.FORMATTER_DATETIME)    \r\n<NbTime [2024-02-29 18:10:57 +0800]>\r\n```\r\n\r\n\u7528\u6237\u4e0d\u60f3\u8981\u5b57\u7b26\u4e32\u5e26\u65f6\u533a\r\n```\r\n>>> NbTime(datetime_formatter=NbTime.FORMATTER_DATETIME_NO_ZONE) \r\n<NbTime [2024-02-29 18:12:18]>\r\n```\r\n\r\n##  4.2 NBTime\u5168\u5c40\u8bbe\u7f6e\u5b57\u7b26\u4e32\u683c\u5f0f\r\n\r\nNbTime.set_default_formatter \u53ef\u4ee5\u5168\u5c40\u8bbe\u7f6e\u65f6\u95f4\u683c\u5f0f\u5b57\u7b26\u4e32,\u5c31\u4e0d\u9700\u8981\u6bcf\u6b21\u90fd\u4f20\u9012\u683c\u5f0f\r\n```\r\n>>> NbTime.set_default_formatter(NbTime.FORMATTER_DATETIME_NO_ZONE)\r\n>>> NbTime()\r\n<NbTime [2024-02-29 18:14:38]>\r\n```\r\n\r\n# 5 NbTime \u5bf9\u8c61\u5185\u7f6e\u7684\u6210\u5458\u5c5e\u6027\r\n\r\n\u89c1\u4e0b\u9762\u7684\u4ea4\u4e92,NbTime\u7c7b\u578b\u5bf9\u8c61\u6709\u975e\u5e38\u4fbf\u6377\u7684\u5404\u79cd\u6210\u5458\u53d8\u91cf,\r\n\r\n```\r\ndatetime  \u7c7b\u578bdatetime.datetime\u7c7b\u578b\u7684\u65f6\u95f4\u5bf9\u8c61,\u8fd9\u4e2a\u5f88\u65b9\u4fbf\u548c\u5185\u7f6e\u7c7b\u578b\u5173\u8054\u8d77\u6765\r\ntime_zone_obj \u65f6\u533a\r\ndatetime_str \u65e5\u671f\u65f6\u95f4\u5b57\u7b26\u4e32\r\ntime_str \u65f6\u95f4\u5b57\u7b26\u4e32\r\ndate_str \u65e5\u671f\u5b57\u7b26\u4e32\r\ntimestamp  \u65f6\u95f4\u6233\u79d2\r\ntimestamp_millisecond \u65f6\u95f4\u6233\u6beb\u79d2\r\ntoday_zero_timestamp \u5f53\u5929\u51cc\u6668\u7684\u65f6\u95f4\u6233\r\n```\r\n\r\n```\r\n>>> nbt=NbTime()\r\n>>> nbt.datetime\r\ndatetime.datetime(2024, 2, 29, 18, 16, 23, 541415, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)\r\n\r\n>>> nbt.time_zone_obj\r\n<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>\r\n\r\n>>> nbt.datetime_str\r\n'2024-02-29 18:16:23'\r\n\r\n>>> nbt.time_str\r\n'18:16:23'\r\n\r\n>>> nbt.date_str\r\n'2024-02-29'\r\n\r\n>>> nbt.timestamp\r\n1709201783.541415\r\n\r\n>>> nbt.timestamp_millisecond\r\n1709201783541.415\r\n\r\n>>> nbt.today_zero_timestamp\r\n1709136000\r\n\r\n```\r\n\r\n# 6 NbTime\u7684\u65b9\u6cd5\r\n\r\n## 6.1 get_str \u65b9\u6cd5\u8f6c\u5316\u6210\u4efb\u610f\u5b57\u7b26\u4e32\u683c\u5f0f\r\n```\r\n\u4f8b\u5982\u83b7\u53d6\u4eca\u5929\u7684\u5e74\u6708\u65e5,\u4e2d\u95f4\u4e0d\u8981\u5e26 - \r\n>>> NbTime().get_str('%Y%m%d')\r\n20240301\r\n```\r\n\r\n## 6.2 shift \u662f\u8ba1\u7b97\u751f\u6210\u65b0\u7684NbTime\u5bf9\u8c61,\u652f\u6301\u65e0\u9650\u8fde\u7eed\u94fe\u5f0f\u64cd\u4f5c\r\n```\r\n\u6c423\u59291\u5c0f\u65f610\u5206\u949f\u540e\u7684\u65f6\u95f4,\u5165\u53c2\u652f\u6301\u6b63\u6570\u548c\u8d1f\u6570\r\n>>> NbTime().shift(hours=1,minutes=10).shift(days=3)\r\n<NbTime [2024-03-03 19:02:49 +0800]>\r\n```\r\n\r\n## 6.3 to_tz \u662f\u751f\u6210\u65b0\u7684\u65f6\u533a\u7684NbTime\u5bf9\u8c61,\u628aNbTime\u5bf9\u8c61\u8f6c\u5316\u6210\u53e6\u4e00\u4e2a\u65f6\u533a.\r\n```\r\n\u4e00\u4e2a\u4e1c7\u533a\u7684\u65f6\u95f4:\r\n>>> NbTime('2024-02-26 15:58:21',datetime_formatter=NbTime.FORMATTER_DATETIME,time_zone=NbTime.TIMEZONE_EASTERN_7)\r\n<NbTime [2024-02-26 15:58:21 +0700]>\r\n\r\n\u90a3\u8fd9\u4e2a\u4e1c7\u533a\u7684\u65f6\u95f4\u8f6c\u5316\u6210\u4e1c8\u533a\u7684\u65f6\u95f4:\r\n>>> NbTime('2024-02-26 15:58:21',datetime_formatter=NbTime.FORMATTER_DATETIME,time_zone=NbTime.TIMEZONE_EASTERN_7).to_tz('UTC+8')\r\n<NbTime [2024-02-26 16:58:21 +0800]>\r\n```\r\n## 6.4 NbTime \u5bf9\u8c61 \u652f\u6301 > < = \u6bd4\u8f83\r\n```\r\nNbTime \u5b9e\u73b0\u4e86 __gt__  __lt__  __eq__ \u65b9\u6cd5,\u53ef\u4ee5\u76f4\u63a5\u6bd4\u8f83\u5927\u5c0f\r\n\r\n>>> NbTime() > NbTime('2023-05-06 01:01:01')                                            \r\nTrue\r\n>>> NbTime() > NbTime('2025-05-06 01:01:01') \r\nFalse\r\n\r\n```\r\n\r\n# 7.\u7528\u6237\u81ea\u5b9a\u4e49\u7ee7\u627f NbTime \u7c7b\r\n\r\n\u56e0\u4e3a nb_time \u662f oop\u9762\u5411\u5bf9\u8c61\u5f00\u53d1\u7684,\u6240\u4ee5\u53ef\u4ee5\u7ee7\u627f,\r\n\u5982\u679c\u662f\u9762\u5411\u8fc7\u7a0b\u7f16\u7a0b,\u4f7f\u7528\u6a21\u5757\u7ea7 + \u51fd\u6570\u7684\u65b9\u5f0f\u6765\u7f16\u7a0b,\u5148\u6539\u53d8\u6a21\u5757\u7684\u67d0\u4e2a\u5168\u5c40\u53d8\u91cf\u6216\u8005\u51fd\u6570\u903b\u8f91,\u53ea\u80fd\u4f7f\u7528\u7334\u5b50\u8865\u4e01\u6280\u672f,\u800c\u4e14\u6a21\u5757\u5929\u7136\u8fd8\u662f\u4e2a\u5355\u4f8b,\u4e0d\u9002\u5408\u591a\u6b21\u7334\u5b50\u8865\u4e01\r\n\u9762\u5411\u5bf9\u8c61\u5c31\u662f\u6709\u4f18\u52bf.\r\n\r\n\r\n## 7.1 \u4f8b\u5982\u7528\u6237\u60f3\u4f7f\u7528 UTC 0\u65f6\u533a,\u4f46\u662f\u4e0d\u60f3\u9891\u7e41\u4f20\u9012 \u65f6\u533a\u5165\u53c2,\u53ef\u4ee5\u4f7f\u7528 nb_time\u7684  \u81ea\u5e26\u7684UtcNbTime \u7c7b,\u6216\u8005\u7528\u6237\u624b\u5199\u8fd9\u4e2a\u7c7b\u81ea\u5df1\u7ee7\u627fNbTime\r\n\r\n```python\r\nclass UtcNbTime(NbTime):\r\n    default_time_zone = NbTime.TIMEZONE_UTC\r\n\r\n# \u4f7f\u7528\u7684\u65f6\u5019\r\nUtcNbTime()   \r\n```\r\n\r\n\r\n## 7.2 \u4f8b\u5982 \u7528\u6237\u60f3\u4f7f\u7528\u4e0a\u6d77\u65f6\u533a,\u5e76\u4e14\u9ed8\u8ba4\u4f7f\u7528\u4e0d\u5e26\u65f6\u533a\u7684\u65f6\u95f4\u5b57\u7b26\u4e32\u683c\u5f0f\u5316\r\n```python\r\nclass ShanghaiNbTime(NbTime):\r\n    default_time_zone = NbTime.TIMEZONE_ASIA_SHANGHAI\r\n    default_formatter = NbTime.FORMATTER_DATETIME_NO_ZONE\r\n\r\n# \u4f7f\u7528\u7684\u65f6\u5019\r\nShanghaiNbTime()  \r\n```\r\n\r\n## 7.3 \u6570\u636e\u5206\u6790,\u5e38\u7528\u7684\u65f6\u95f4\u4e5f\u53ef\u4ee5\u52a0\u4e0a\u6765\r\n\r\n```python\r\nclass PopularNbTime(NbTime):\r\n    @property\r\n    def ago_1_days(self):\r\n        return self.shift(days=-1)\r\n\r\n    @property\r\n    def ago_7_days(self):\r\n        return self.shift(days=-7)\r\n\r\n    @property\r\n    def ago_30_days(self):\r\n        return self.shift(days=-30)\r\n\r\n    @property\r\n    def ago_180_days(self):\r\n        return self.shift(days=-180)\r\n```\r\n\r\n\r\n\r\n# 8 NbTime\u603b\u7ed3\r\n\r\n```\r\n\u603b\u7ed3\u5c31\u662f NbTime \u7684\u5165\u53c2\u63a5\u53d7\u6240\u6709\u7c7b\u578b,NbTime\u652f\u6301\u94fe\u5f0f\u8c03\u7528,Nbtime\u65b9\u4fbf\u652f\u6301\u65f6\u533a,Nbtime\u65b9\u4fbf\u64cd\u4f5c\u65f6\u95f4\u8f6c\u5316,\r\n\u6240\u4ee5NbTime\u64cd\u4f5c\u65f6\u95f4,\u8fdc\u8fdc\u66b4\u51fb\u4f7f\u7528datetime\u548c\u4e09\u65b9arrow\u5305,\r\n\u8fdc\u8fdc\u66b4\u51fb\u7528\u6237\u5728 utils.time_utils.py\u6587\u4ef6\u4e2d\u5199\u51e0\u767e\u4e2a\u5b64\u7acb\u7684\u9762\u5411\u8fc7\u7a0b\u64cd\u4f5c\u65f6\u95f4\u7684\u51fd\u6570.\r\n```\r\n",
    "bugtrack_url": null,
    "license": "BSD License",
    "summary": "Awesome time conversion handling with support for chaining operations.",
    "version": "1.8",
    "project_urls": {
        "Homepage": "https://github.com/ydf0509/nb_time"
    },
    "split_keywords": [
        "arrow",
        " time",
        " datetime",
        " time_utils"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "921982a9ad8900a5d6c499cc822d91ad16371d5b953348ba9bdc7794b2902374",
                "md5": "c94fbc3c65bd1df8c00864ca90f3b700",
                "sha256": "d7ce906d9171b964c66965f095c7e32be2d5b9fe54c90d4b0f681effd5f5d48b"
            },
            "downloads": -1,
            "filename": "nb_time-1.8-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c94fbc3c65bd1df8c00864ca90f3b700",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 8419,
            "upload_time": "2024-04-25T03:33:34",
            "upload_time_iso_8601": "2024-04-25T03:33:34.400749Z",
            "url": "https://files.pythonhosted.org/packages/92/19/82a9ad8900a5d6c499cc822d91ad16371d5b953348ba9bdc7794b2902374/nb_time-1.8-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7183d9eed6e32ab28851e9018c825a1ac8ee89cdd8db271e8145dbb37df0392f",
                "md5": "337ebc78aa363fcd24ee7f2e94bc8779",
                "sha256": "6ffd0ef6f88e1ecbbfd39a25d66a7a05c1acd4da4e7e47f2a73cebc2852a2dd0"
            },
            "downloads": -1,
            "filename": "nb_time-1.8.tar.gz",
            "has_sig": false,
            "md5_digest": "337ebc78aa363fcd24ee7f2e94bc8779",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 8723,
            "upload_time": "2024-04-25T03:33:36",
            "upload_time_iso_8601": "2024-04-25T03:33:36.227599Z",
            "url": "https://files.pythonhosted.org/packages/71/83/d9eed6e32ab28851e9018c825a1ac8ee89cdd8db271e8145dbb37df0392f/nb_time-1.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-25 03:33:36",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ydf0509",
    "github_project": "nb_time",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "nb-time"
}
        
Elapsed time: 0.25009s