Python datetime + time

datetime

# -*- coding:utf8 -*-
"""
# editor: hjjdreamer
# create-time: 2023/1/22-8:51
# Python-Script: 27_datetime.py
# describe:

4个类
datetime.date == 年月日
datetime.time == 时分秒
datetime.datetime == 年月日+时分秒
datetime.timedelta == 时间差
"""

import datetime

# datetime.date
# 生成日期
d = datetime.date.today()
print(d, type(d))
# 2023-01-22 <class 'datetime.date'>


d1 = datetime.date(2022, 8, 24)
print(d1, type(d1))

import time

d2 = datetime.date.fromtimestamp(time.time())
print(d2, type(d2))

# 类属性
print(datetime.date.min)
print(datetime.date.max)
print(datetime.date.resolution)  # timedelta == 最小时间差

# 0001-01-01
# 9999-12-31
# 1 day, 0:00:00


# 实例属性
print(d.year)
print(d.month)
print(d.day)

# 常用实例方法
# datetime.date对象 == 结构化时间对象
print(d.timetuple())
# time.struct_time(tm_year=2023, tm_mon=1, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=22, tm_isdst=-1)

# 其他方法
# replace
# year
print(d.replace(2020))
# month
print(d.replace(d.year, 9))
# day
print(d.replace(day=20))
print(d.replace(d.year, d.month, 20))
# 从0001-01-01到现在的天数
print(d.toordinal())

print(d.weekday())  # 0代表周一             6
print(d.isoweekday())  # 1代表周一,0代表周日    7
print(d.isoformat())  # 2023-01-22
print(d.strftime("%Y年%m月%d日"))  # 字符串格式化

print("\n===========datetime.time=============\n")
print("{:=^50s}".format("datetime.time"))

# time
# 生成时间
t = datetime.time(15, 10, 45, 888888)
print(t, type(t))

# 类方法
print(datetime.time.min)
print(datetime.time.max)
print(datetime.time.resolution)

# 实例属性
print(t.hour)
print(t.minute)
print(t.second)
print(t.microsecond)

# 其他方法
print(t.isoformat())
print(t.strftime("%H时%M分%S秒 %f微分"))

print("\n{:=^50s}".format("datetime.datetime"))
# datetime.datetime
# 生成日期时间
dt = datetime.datetime(2019, 7, 15, 13, 24, 45, 888888)
print(dt, type(dt))

dt1 = datetime.datetime.now(tz=None)
print(dt1, type(dt1))

dt2 = datetime.datetime.today()
print(dt2, type(dt2))

dt3 = datetime.datetime.utcnow()
print(dt3, type(dt3))

# 时间戳 ==> dt4
dt4 = datetime.datetime.fromtimestamp(time.time())
print(dt4, type(dt4))

dt5 = datetime.datetime.utcfromtimestamp(time.time())
print(dt5, type(dt5))

# 字符串 ==> dt
dt6 = datetime.datetime.strptime("2020-07-14 04:13:46", "%Y-%m-%d %H:%M:%S")
print(dt6, type(dt6))

# date,time ==> datetime
print(d)
print(t)
dt7 = datetime.datetime.combine(d, t)
print(dt7, type(dt7))


# 属性
print(dt)
print(t)
print(dt.year)
print(dt.month)
print(dt.day)
print(t.minute)
print(dt.second)
print(dt.microsecond)

# replace
print(dt.replace(second=57,day=20))

# datetime ==> 结构化对象
print(dt.timetuple())

# datetime ==> 时间戳
print(dt.timestamp())

# datetime ==> 格式化字符串
print(dt.strftime("%Y年%m月%d日 %H时%M分%S秒 %f微分"))

# 时间戳 ==> datetime
print(datetime.datetime.fromtimestamp(time.time()))

# 格式化对象 ==> datetime
print(datetime.datetime.strptime("2020-07-14 04:13:46", "%Y-%m-%d %H:%M:%S"))

# 结构化对象 ==> datetime
print(datetime.datetime.fromtimestamp(time.mktime(time.localtime())))

print("\n{:=^50s}".format("datetime.timedate"))
# datetime.timedate
# class datetime.timedelta(days=0,second=0,microseconds=0,millisecond=0,hours=0,weeks=0)

# 生成时间差
td = datetime.timedelta(days=10)
print(td, type(td))

td1 = datetime.timedelta(days=10, hours=5)
print(td1, type(td1))

td2 = datetime.timedelta(days=-10)
print(td2, type(td2))

td3 = datetime.timedelta(days=-20, hours=-10)
print(td3, type(td3))

td4 = datetime.timedelta(hours=75)
print(td4, type(td4))

td5 = datetime.timedelta(weeks=2)
print(td5, type(td5))

# 计算目标日期
dt = datetime.datetime.today()
print("现在是 {}".format(dt.strftime("%Y年%m月%d日 %H时%M分%S秒")))

delta = datetime.timedelta(days=10)
target = dt + delta
print("十天后是 {}".format(target.strftime("%Y年%m月%d日 %H时%M分%S秒")))


delta = datetime.timedelta(weeks=1)
target = dt + delta
print("一周后是 {}".format(target.strftime("%Y年%m月%d日 %H时%M分%S秒")))

delta = datetime.timedelta( hours=-5)
target = dt + delta
print("五小时前是 {}".format(target.strftime("%Y年%m月%d日 %H时%M分%S秒")))

# 计算时间差
dt1 = datetime.datetime.today()
dt2 = datetime.datetime.utcnow()
td = dt1 - dt2
print("我们与utc3时间的差异是:{:.0f}小时".format(td.seconds/3600))

在Jupyter上的一些测试

import datetime
from datetime import date, timedelta
end = datetime.datetime.strptime("2022-05-01","%Y-%m-%d").replace(day=1) - timedelta(days=1)
print(end)

endate = datetime.datetime.date(end)
print(endate)

 

time

# -*- coding:utf8 -*-
"""
# editor: hjjdreamer
# create-time: 2023/1/23-7:43
# Python-Script: 28_time.py
# describe:

时间戳
结构化时间对象
格式化时间字符串
"""

import time

#时间戳 1970.01.01 到指定时间时间间隔,单位是秒
print(time.time())
print(time.time() - 3600)

# 结构化时间对象
st = time.localtime()
print(type(st))
print(st)

# <class 'time.struct_time'>
# time.struct_time(tm_year=2023, tm_mon=1, tm_mday=23, tm_hour=8, tm_min=18, tm_sec=10, tm_wday=0, tm_yday=23, tm_isdst=0)

print("今天是 {}-{:02d}-{}".format(st[0],st[1],st[2]))
print("今天是星期{}".format(st.tm_wday + 1))

# 对象的属性是只读的
# st.tm_yday = 196

# 格式化时间字符串
print(time.ctime())

# strftime(时间格式) "%Y-%m-%d %H:%M:%S"
print(time.strftime("%Y-%m-%d %H:%M:%S"))
print(time.strftime("%Y年%m月%d日 %H时%M分%S秒"))

print(time.strftime("%Y-%m-%d %H:%M:%S %a"))
print(time.strftime("%Y-%m-%d %H:%M:%S %A"))
print(time.strftime("%Y-%m-%d %H:%M:%S %b"))
print(time.strftime("%Y-%m-%d %H:%M:%S %B"))
print(time.strftime("%Y-%m-%d %H:%M:%S %p"))
print(time.strftime("%Y-%m-%d %H:%M:%S %w"))
print(time.strftime("%Y-%m-%d %H:%M:%S %W"))

# 2023-01-23 10:47:13
# 2023年01月23日 10时47分13秒
# 2023-01-23 10:47:13 Mon
# 2023-01-23 10:47:13 Monday
# 2023-01-23 10:47:13 Jan
# 2023-01-23 10:47:13 January
# 2023-01-23 10:47:13 AM


# sleep
t1 = time.time()
print("sleep begin")
time.sleep(1.25)
print("sleep end")
t2 = time.time()
print("执行了 {:.3f} 秒".format(t2 - t1))

# 时间格式转换
# 时间戳 ==> 结构化对象
# UTC
print(time.gmtime())
print(time.gmtime(time.time()-3600))

# Local
print(time.localtime())
print(time.localtime(time.time()-3600))

# 结构化对象 ==> 时间戳
# mktime(st)
print(time.time())
print(time.mktime(time.localtime()))

# 结构化对象 ==> 格式化时间字符串
# strftime(format, st)
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

# 格式化字符串 ==> 结构化时间对象
# strptime(str, format)
strtime1 = "2020-07-25 13:32:18"
print(time.strptime(strtime1, "%Y-%m-%d %H:%M:%S"))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值