Python datetime基本使用

time和datetime的区别

  • time

time提供的功能更加接近操作系统层面,主要调用C平台的C libarary的同名函数,表现的日期范围仅限于1970-2038。
这里的time指的是大模块的time,不是datetime中的time

import time

if __name__ == '__main__':
    # 获取时间戳
    print(time.time())
    # 获取时间元组
    print(time.localtime())

运行结果

1682209857.7490914
time.struct_time(tm_year=2023, tm_mon=4, tm_mday=23, tm_hour=8, tm_min=30, tm_sec=57, tm_wday=6, tm_yday=113, tm_isdst=0)
  • datetime

datetime功能更加丰富,个人一般喜欢用datetime。

import datetime

if __name__ == '__main__':
    print(datetime.datetime.now())

运行结果

2023-04-23 08:36:02.819775

datetime常见用法

获取当前时间戳

from datetime import datetime

if __name__ == '__main__':
    ## 或者用time.time()也可以
    print(datetime.timestamp(datetime.now()))

# 1682210363.43843

时间戳转时间

def stamp_to_datetime(timestamp):
    return datetime.strftime(datetime.fromtimestamp(timestamp), '%Y-%m-%d %H:%M:%S')


if __name__ == '__main__':
    # 获取时间戳
    timestamp = datetime.timestamp(datetime.now())
    # 格式化时间(这里的时间戳通过time.time()获取也行)
    string_date_time = stamp_to_datetime(timestamp)
    print(string_date_time)

    # 结果 2023-04-23 08:42:49

日期转字符串

def datetime_to_string(dt):
    return datetime.strftime(dt, '%Y-%m-%d %H:%M:%S')


if __name__ == '__main__':
    print(datetime_to_string(datetime.now()))
    # 结果 2023-04-23 08:45:27

字符串转日期

def string_to_datetime(date_str):
    return datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S')


if __name__ == '__main__':
    print(string_to_datetime('2023-08-23 00:00:00'))

日期加减

from datetime import datetime, timedelta

if __name__ == '__main__':
    # 明天
    next_day = datetime.now() + timedelta(days=1)
    print(next_day)
    # 昨天
    pre_day = datetime.now() - timedelta(days=1)
    print(pre_day)
    # 下一个小时
    next_hour = datetime.now() + timedelta(hours=1)
    print(next_hour)
    # 上一个小时
    pre_hour = datetime.now() - timedelta(hours=1)
    print(pre_day)
    # 下一分钟
    next_minute = datetime.now() + timedelta(minutes=1)
    print(next_minute)
    # 上一分钟
    pre_minute = datetime.now() - timedelta(minutes=1)
    print(pre_minute)

日期间隔

from datetime import datetime

if __name__ == '__main__':
    now_dt = datetime.now()
    future_dt = datetime.strptime('2023-05-01 00:00:00', '%Y-%m-%d %H:%M:%S')
    gap = future_dt - now_dt
    # datetime-datetime得到的类型:timedelta
    print(type(gap))
    # 相差天数
    print(gap.days)
    # 相差秒
    print(gap.seconds)
    # 相差微妙
    print(gap.microseconds)

运行结果

<class 'datetime.timedelta'>
7
13387
175852

json中的时间

  • 序列化

    import json
    from datetime import datetime
    

class Student:
def init(self, name: str, birthday: datetime):
self.name = name
self.birthday = birthday

def json_serial(obj):
“”“JSON serializer for objects not serializable by default json code”“”

if isinstance(obj, datetime):
    return datetime.strftime(obj, '%Y-%m-%d %H:%M:%S')
raise TypeError("Type %s not serializable" % type(obj))

if name == ‘main’:
std = Student(‘admin’, datetime.now())
with open(‘student.txt’, mode=‘w’) as fp:
json.dump(std.dict, fp, indent=4, default=json_serial)

文件中新增内容
```python
{
    "name": "admin",
    "birthday": "2023-04-23 20:29:25"
}
  • 反序列化

    import json
    from datetime import datetime
    

class Student:
def init(self, name, birthday: datetime):
self.name = name
self.birthday = birthday

def DecodeDateTime(std):
if ‘birthday’ in std:
std[“birthday”] = datetime.strptime(std[“birthday”], ‘%Y-%m-%d %H:%M:%S’)
return std

if name == ‘main’:
with open(file=‘student.txt’, mode=‘r’) as fp:
str = fp.read()
student_obj = Student(**json.loads(str, object_hook=DecodeDateTime))
print(type(student_obj.birthday))
print(student_obj.birthday)

结果
```python
<class 'datetime.datetime'>
2023-04-23 20:29:25
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值