time与datetime模块

time模块

本质上是调用了c的扩展实现的

三种时间显示

  • 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
import time
print(time.time())

# 时间戳:122222456.5512204
# 一般使用来计算时间间隔
  • 格式化的时间字符串(Format String)
import time
print(time.strftime("%Y-%m-%d %X"))
# 格式化的时间字符串:'2019-04-19 14:30:56'
# 一般使用来显示时间使用
  • 结构化的时间(struct_time):struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)
import time
print(time.localtime())
# 本地时区的struct_time  time.struct_time(tm_year=2019, tm_mon=4, tm_mday=19, tm_hour=14, tm_min=30, tm_sec=56, tm_wday=4, tm_yday=109, tm_isdst=0)

print(time.gmtime())
# UTC时区的struct_time   time.struct_time(tm_year=2019, tm_mon=4, tm_mday=19, tm_hour=6, tm_min=30, tm_sec=56, tm_wday=4, tm_yday=109, tm_isdst=0)

# 一般用来转化时间

三种时间的转化

https://images2015.cnblogs.com/blog/1036857/201702/1036857-20170215142700722-743334012.png

  • 时间戳和结构化时间互转
# localtime([secs])
# 将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。
time.localtime()
time.localtime(1473525444.037215)
# gmtime([secs]) 和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。

# mktime(t) : 将一个struct_time转化为时间戳。
print(time.mktime(time.localtime()))
#1473525749.0
  • 结构化时间和格式化字符串时间互转
# strftime(format[, t])
#把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。如果元组中任何一个元素越界,ValueError的错误将会被抛出。

print(time.strftime("%Y-%m-%d %X", time.localtime()))#2016-09-11 00:49:56

# time.strptime(string[, format])
# 把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。

print(time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X'))
#time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6,tm_wday=3, tm_yday=125, tm_isdst=-1)

# 在这个函数中,format默认为:"%a %b %d %H:%M:%S %Y"。

特殊时间转换

  • 两种转换方式
# asctime([t]) : 把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。
# 如果没有参数,将会将time.localtime()作为参数传入。
print(time.asctime() )#Sun Sep 11 00:43:43 2019

# ctime([secs]) : 把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为
# None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。
print(time.ctime())  # Sun Sep 11 00:46:38 2016
print(time.ctime(time.time()))  # Sun Sep 11 00:46:38 2016

datetime模块

相较于time模块只是封装了一下time模块,使用起来比较容易理解

时间修改

一般用来计算会员使用时间的问题

print(datetime.datetime.now())
#返回 2016-08-19 12:47:03.941925

print(datetime.date.fromtimestamp(time.time()) )
# 时间戳直接转成日期格式 2016-08-19

print(datetime.datetime.now() )

print(datetime.datetime.now() + datetime.timedelta(3))
#当前时间+3天

print(datetime.datetime.now() + datetime.timedelta(-3))
#当前时间-3天

print(datetime.datetime.now() + datetime.timedelta(hours=3))
#当前时间+3小时

print(datetime.datetime.now() + datetime.timedelta(minutes=30))
#当前时间+30分


c_time  = datetime.datetime.now()
print(c_time.replace(minute=3,hour=2))
#时间替换
posted @ 2019-04-18 17:45  樵夫-justin  阅读(115)  评论(0编辑  收藏  举报