python关于时间的函数_Python.关于时间的一些处理方法(下)

本文主要依托于Pandas的时间处理模块以及datatime包,介绍若干关于时间处理的方法与小技巧,为今后工作、学习时需要时间处理时提供参照。本篇将介绍如何简单构造时间对象,以及实现时间与字符串的互转,以及时间对象的简单运算。

本文为时间处理方法的下篇,主要介绍date与time的结合、对datetime进行修改、timedelta的构造、将时间戳转换为时间对象、将时间对象转换为时间戳、获取星期几、获取本周第一天、最后一天,以及calender的用法。

1 date与time的结合

# 构造d1与t1

d1 = datetime.date(2020,12,12)

t1 = datetime.time(20,10,1)

print(d1)

print(t1)

# output

2020-12-12

20:10:01

# 将日期date和时间time相结合,方法是datetime.datetime.combine(d1,t1)

dt4 = datetime.datetime.combine(d1,t1)

print(dt4)

# output

2020-12-12 20:10:01

# 单独取出合并后的dt4中的date与time

print(dt4.date())

print(dt4.time())

# output

2020-12-12

20:10:01

2 对datetime进行修改

# 使用datetime对象的.replace()方法来更改相应的year、month、day、hour、minute、second

dt5 = dt4.replace(year=2021,month=1,day=11,hour=21,minute=12,second=2)

print(dt5)

# output

2021-01-11 21:12:02

3 timedelta的构造

# timedelta对象表示`两个date`或者`time`或者`datetime`的时间间隔

# 构造timedelta

delta = datetime.timedelta(weeks=4,

days=20,

hours=5,

minutes=40,

seconds=20,

microseconds=8000,

milliseconds=90000,)

delta

# output

datetime.timedelta(days=48, seconds=20510, microseconds=8000)

print(delta)

# output

48 days, 5:41:50.008000

4 时间戳转时间对象

# 时间戳是指格林威治时间1970 年01 月01 日00 时00 分00 秒(北京时间1970 年01 月01 日08 时00 分00秒) 起至现在的总秒数。

# 所以设置初始时间时需要:dt_s = datetime.datetime(1970,1,1,8)

# 直接time.time()得到时间戳

ts_1 = time.time()

print(ts_1)

# output

1613298180.6695764

# 看格林威治时间1970 年01 月01 日00 时00 分00 秒 到现在有多少天

int(time.time()/86400)

# output

18672

# 获取当天00:00:00的时间戳,由于计算的是格林威治时间,故北京时间要减去8个小时乘以3600秒

ts_2 = int(time.time()/86400) * (86400)-3600 * 8

ts_2

# output

1613232000

# 获取当天23:59:59的时间戳

# 一天有24*60*60 = 86400秒

ts_3 = int(time.time()/86400) * 86400-3600 * 8 + 86400 - 1

ts_3

# output

1613318399

# 将时间戳对象转换为datetime

# ts_1 = 距今的时间戳

# ts_2 = 当天北京时间00:00:00的时间戳

# ts_3 = 当天北京时间23:59:59的时间戳

print(datetime.datetime.fromtimestamp(ts_1))

print(datetime.datetime.fromtimestamp(ts_2))

print(datetime.datetime.fromtimestamp(ts_3))

# output

2021-02-14 18:23:13.203259

2021-02-14 00:00:00

2021-02-14 23:59:59

# 将时间戳对象转换为date

print(datetime.date.fromtimestamp(ts_1))

# output

2021-02-14

# 注意 时间戳对象可以转换为date,但不能转换为time,转换为time可以通过字符串转换

print(datetime.time.fromisoformat("23:08:00"))

# output

23:08:00

5 将时间对象转换为时间戳

dt1 = datetime.datetime(2021,2,14,20,10,2)

dt_s = datetime.datetime(1970,1,1,8)

# 计算2021年02月14日20点10分2秒到1970年1月1日8点0分0秒的时间戳秒数之差

timedelta_1 = dt1 - dt_s

timedelta_1

# output

datetime.timedelta(days=18672, seconds=43802)

print(timedelta_1)

# output

18672 days, 12:10:02

# 使用.total_seconds()获得时间戳的总秒数

timedelta_s = timedelta_1.total_seconds()

timedelta_s

# output

1613304602.0

6 获取星期几

dt5 = datetime.datetime.fromtimestamp(timedelta_s)

print(dt5)

# output

2021-02-14 20:10:02

# 获取星期几

## 数字从0开始,0代表星期一,1代表星期二,2代表星期三

dt5.weekday()

# output

6

## 数字从1开始,1代表星期一,2代表星期二,3代表星期三

dt5.isoweekday()

# output

7

7 timedelta的一些计算

# 获取当前日的前几天/后几天

## 获得当前日的后一天

datetime.date.today() + datetime.timedelta(days=1)

# outut

datetime.date(2021, 2, 15)

## 获得当前日的前一天

datetime.date.today() - datetime.timedelta(days=1)

# output

datetime.date(2021, 2, 13)

8 获取本周或本月第一天及最后一天

d_today = datetime.date.today()

d_today

# output

datetime.date(2021, 2, 14)

d_today.weekday()

# output

6

# 获取timedelta

datetime.timedelta(d_today.weekday())

# output

datetime.timedelta(days=6)

# 获取本周第一天

d_today - datetime.timedelta(d_today.weekday())

# output

datetime.date(2021, 2, 8)

# 获取本周最后一天

d_today + datetime.timedelta(6-d_today.weekday())

# output

datetime.date(2021, 2, 14)

9 calender的用法

# 导入calender

import calender

# 查看2021年的日历

calendar.prcal(2021)

# output

# 获取某月的日历

print(calendar.month(2021,1))

# output

January 2021

Su Mo Tu We Th Fr Sa

1 2

3 4 5 6 7 8 9

10 11 12 13 14 15 16

17 18 19 20 21 22 23

24 25 26 27 28 29 30

31

calendar.prmonth(2020,10)

# output

February 2021

Su Mo Tu We Th Fr Sa

1 2 3 4 5 6

7 8 9 10 11 12 13

14 15 16 17 18 19 20

21 22 23 24 25 26 27

28

# 查看是星期几(0-6 代表周一到周日)

print(calendar.weekday(2021,2,14))

# output

6

#返回一个包含星期几的缩写名的头, n 指定星期几缩写的字符宽度。

print(calendar.weekheader(3))

# output

Sun Mon Tue Wed Thu Fri Sat

总结

本文是Python中借助于datetime包所常用的时间处理方法的总结,主要介绍了:datetime包中使用combine将date和time进行结合;

对于一个datetime对象使用.replace()对其进行修改;

使用datetime.timedelta()构造timedelta对象;

使用time.time()获取至今的时间戳,并使用datetime.datetime.fromtimestamp()将时间戳转换为时间对象;

两个datetime日期相减得到timedelta,可以通过.days或者.total_seconds()获取天数和总秒数;

datetime使用.weekdays()或者isoweekdays()获取星期数;

datetime加或减datetime.timedelta()可以计算不同时间;

使用caldender的.prcal()或者.month()获取某年获某月的日历;

参考资料:

[1] 13个知识点,系统整理Python时间处理模块Datetime.[Website].13个知识点,系统整理Python时间处理模块Datetime

[2] datetime 模块入门总结.[Website].datetime 模块入门总结

[4] Python基础模块:日期与时间模块@time+datetime.[Website]. Python基础模块:日期与时间模块@time+datetime

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值