python -- 日期与时间

1、时间戳

时间戳是指从格林威治时间1970年1月1日0时0分0秒(北京时间1970年1月1日8时0分0秒),起到当前时间的总秒数。

函数time.time()用于获取当前时间戳。

时间戳是以秒为单位的浮点数。适合用做日期和时间的加减运算。

例如,计算两个时间的间隔,可以先将两个时间转化为时间戳,再进行减法运算。

二、时间元组

时间元组struct_time:包含了9组数字,如下表:

时间元组与时间戳、格式化时间字符串之间均可以相互转换。

三、格式化时间

time.strftime(format [, tuple]):将日期和时间元组转换为一个格式为format的字符串。

import time


# -----------------------------------------
# time时间模块
# -----------------------------------------
# 时间戳
t1 = time.time() # 获取当前时间戳
print("第一个时间戳为:", t1)

t2 = time.time()
print("第二个时间戳为:", t2)

# 计算两个时间的间隔
print("时间差为:{.3f}".format(t2-t1))

# 时间元组
# localtime():将以秒为单位的时间戳转化为本地时间(以时间元组的形式)
t3 = time.time()
st = time.localtime(t3)
# st = time.localtime() #不传入参数,打印出的是当前系统时间
print(st)

# 格式化时间
# 最简单的获取可读时间模式的函数是asctime(),字符串的格式为“星期 月份 日 时:分:秒 年”
print(time.asctime(time.localtime(time.time())))
# print(time.asctime()) #打印出格式为:Sun Jul 21 20:04:04 2019

# ctime()可以把一个时间戳转化为asctime()可视化时间的形式
print(time.ctime(t3)) #打印出的格式与asctime()一致

# strftime()可以使用time模块的strftime方法来格式化日期
print(time.strftime("%Y-%m-%d %A", time.localtime())) # 默认为当前时间
print(time.strftime("%H:%M:%S", time.localtime())) # 24小时制
print(time.strftime("%I:%M:%S", time.localtime())) # 12小时制

# strptime()用于根据指定的格式把一个时间字符串转化为时间元组
print(time.strptime('2018-09-12 16:28:58', '%Y-%m-%d %X'))

# clock()函数返回目前的CPU时间。
# 第一次调用时,返回程序运行的实际时间
print(time.clock())
# 将当前进程置入睡眠状态5秒钟
time.sleep(5)
# 第二次调用时,返回自第一次调用到这一次调用的时间间隔
print(time.clock())

# gmtime()将时间戳转换为代表UTC(格林威治时间)的时间元组,默认为当前时间
secs = 1582414145
print(time.gmtime(secs))
print(time.gmtime())

# mktime()将时间元组转换为时间戳
lt = time.localtime()
print(time.mktime(lt))
import calendar


# -----------------------------------------
# calendar日历模块
# -----------------------------------------
# 返回2018年10月日历
cal = calendar.month(2019, 10)
print("输出2019年10月份的日历:")
print(cal)

# 返回2019年的年历
cal1 = calendar.calendar(2019)
print(cal1)

# 判断年份是否为闰年
year = 2020
if calendar.isleap(year):
print("%d年是闰年" % year)
else:
print("%d年不是闰年" % year)

# 设置每周的起始日期码。0(星期一)到6(星期日)
calendar.setfirstweekday(6)
# 返回当前每周起始日期的设置。默认为0星期一
print("每周起始日期码为:", calendar.firstweekday())

# 返回给定日期的日期码,0(星期一)到6(星期日)
print(calendar.weekday(2019, 7, 21))


四、datatime模块
datetime模块提供对日期和时间的各种各样的操作。
datetime模块定义了两个常量:
  MINYEAR: 最小年份,值为1
  MAXYEAR:最大年份,值为9999

datetime模块定义了5个类:
1.date:日期类,常用属性有year、month和day
2.time:时间类,常用属性有hour、minute、second、microsecond和tzinfo
3.datetime:日期和时间的组合类
4.timedelta:时间间隔类,即两个时间点之间的长度
5.tzinfo:时区信息类

import datetime
import time

# -------------------------------------------------------------
# datetime模块定义了5个类:date、time、datetime、timedelta、tzinfo
# -------------------------------------------------------------
# date类
# 返回当前本地时间的date对象
today = datetime.date.today()
print("今天是{}年{}月{}日".format(today.year, today.month, today.day))

# 创建两个日期对象
d1 = datetime.date(2018, 8, 25)
d2 = datetime.date(2018, 9, 18)

# 比较两个日期的大小
d1.__eq__(d2) # 判断两个日期是否相等
d1.__ge__(d2) # 判断d1是否大于等于d2
d1.__gt__(d2) # 判断d1是否大于d2
d1.__le__(d2) # 判断d1是否小于等于d2
d1.__lt__(d2) # 判断d1是否小于d2
d1.__ne__(d2) # 判断d1是否不等于d2

# time类
# 创建一个时间对象
t = datetime.time(10, 28, 32, 680680)
print("{}时{}分{}秒{}微秒".format(t.hour, t.minute, t.second, t.microsecond))

# 同样可以比较两个时间的大小

# max属性表示时间的最大值
print(datetime.time.max) #打印的是:23:59:59.999999
# min属性表示时间的最小值
print(datetime.time.min) #打印的是:00:00:00

# __format__()函数将时间对象以指定的格式转化为字符串
print(t.__format__('%H:%M:%S'))

# datetime类可以看作date类和time类的合体,大部分方法和属性都与这两个类类似
# now()返回当前的日期时间的datetime对象
now = datetime.datetime.now()
print(now)

# time()返回datetime对象的时间部分
print(now.time())

# combine()将一个date对象和一个time对象合并生成一个datetime对象
new_datetime = datetime.datetime.combine(today, now.time())
print(new_datetime)

# timedelta类
# 用于计算两个date或datetime对象的差值
# 计算100天前的时间
delta = datetime.timedelta(days=100)
print(delta)
new_time = now - delta
print(new_time)

# 计算100天后的时间
new_time2 = now + delta
print(new_time2)

# 获取上个月的第一天和最后一天的日期
# 获取当前日期对象
today = datetime.date.today()
print(today)
delta = datetime.timedelta(days=1)

# 获取当月第一天的前面一天,即上个月的最后一天
last_day = datetime.date(today.year, today.month, 1) - delta
print(last_day)

# 再创建个上月第一天的日期对象
first_day = datetime.date(last_day.year, last_day.month, 1)
print(first_day)

# 获取时间差,可以用天数、小时、分钟、秒或微秒不同的单位
start_time = datetime.datetime.now()
time.sleep(6)
end_time = datetime.datetime.now()
print((end_time - start_time).seconds)

# 计算当前时间向后32小时的时间
dt1 = datetime.datetime.now()
dt2 = dt1 + datetime.timedelta(hours=32)
print(dt2) 

猜你喜欢

转载自www.cnblogs.com/Teachertao/p/11222696.html