获取日期,日期与时间戳的转换,以及获取前后几天的日期
程序员文章站
2022-06-01 07:53:19
...
这里引入datetime模块
from datetime import date, datetime, timedelta
time.localtime() # time.struct_time(tm_year=2019, tm_mon=8, tm_mday=23, tm_hour=18, tm_min=57, tm_sec=0, tm_wday=4, tm_yday=235, tm_isdst=0)
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) # 年月日 时分秒
day = date.today() # 获取今日日期,只显示年-月-日
now = datetime.now() # 获取当前日期以及时间(年-月-日-时-分-秒.微秒)
after_day = now + timedelta(days=3) # 获取3天后的日期以及时间
after_hour = now + timedelta(hours=1) # 获取当前时间1小时后的时间
after_minu = now + timedelta(minutes=10) # 获取当前时间10分钟后的时间
after_week = now + timedelta(weeks=1) # 获取当前时间1周后的时间
# 同理“+”变成“-”,就是获取过去的时间
# 如果用年月日+未来或过去的时间,就不显示时分秒,只显示年月日
print("未来一周的日期是:%s" % after_week.strftime("%Y-%m-%d"))
以下是格式化英文的含义:
%a | 星期的简写。如 星期三为Web |
%A | 星期的全写。如 星期三为Wednesday |
%b | 月份的简写。如4月份为Apr |
%B | 月份的全写。如4月份为April |
%c: | 日期时间的字符串表示。(如: 04/07/10 10:43:39) |
%d: | 日在这个月中的天数(是这个月的第几天) |
%f: | 微秒(范围[0,999999]) |
%H: | 小时(24小时制,[0, 23]) |
%I: | 小时(12小时制,[0, 11]) |
%j | 日在年中的天数 [001,366](是当年的第几天) |
%m | 月份([01,12]) |
%M | 分钟([00,59]) |
%p | AM或者PM |
%S | 秒(范围为[00,61],为什么不是[00, 59],参考python手册_) |
%U | 周在当年的周数当年的第几周),星期天作为周的第一天 |
%w | 今天在这周的天数,范围为[0, 6],6表示星期天 |
%W | 周在当年的周数(是当年的第几周),星期一作为周的第一天 |
%x | 日期字符串(如:04/07/10) |
%X | 时间字符串(如:12:00:00) |
%y | 2个数字表示的年份 |
%Y | 4个数字表示的年份 |
%z | 与utc时间的间隔 (如果是本地时间,返回空字符串) |
下方代码来自python基础教程中的日期和时间模块中的笔记部分
from datetime import datetime
from datetime import date
from datetime import time as time_datetime
import time
from datetime import timedelta
# ------------------1、获得当前时间-------------#
# 得到当前时间戳
print(time.time())
# 时间戳转换为时间元组
print(time.localtime(time.time()))
print(time.gmtime(time.time()))
# 将时间元组格式化输出成字符串时间
print(time.strftime("%Y-%m-%d", time.localtime(time.time())))
print(time.strftime("%Y-%m-%d", time.gmtime(time.time())))
# 不带参数默认输出当前时间
print(time.strftime("%Y-%m-%d"))
# 通过datetime模块来实现
print(datetime.fromtimestamp(time.time()).strftime("%Y-%m-%d"))
print(datetime.now().strftime("%Y-%m-%d"))
print(datetime.today().strftime("%Y-%m-%d"))
# ------------------2、获取时间差,计算执行时间-------------#
# time 模块获取时间戳
start = time.time()
time.sleep(1)
print(time.time() - start)
# datetime模块
start = datetime.now()
time.sleep(1)
print((datetime.now() - start).seconds)
# 计算昨天的日期
print(datetime.now() - timedelta(days=1))
# 时间元组转化为时间戳
print(time.mktime(time.localtime())) # localtime获取时间元组
print(time.mktime(time.gmtime())) # gmtime获取时间元组,格林威治时间
print(time.mktime(datetime.now().timetuple())) # datetime里获取时间元组
# 将时间字符串转换为时间元组
print(time.strptime("2019-07-14 11:23:33", "%Y-%m-%d %H:%M:%S"))
# 表示时间的两种方式:
# 1. 时间戳(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的
# 2. 时间元组 即(struct_time),共有九个元素,分别表示,同一个时间戳的struct_time会因为时区不同而不同
# ------------------3、time时间模块-------------#
# time.clock方法
# 这个需要注意,在不同的系统上含义不同。在UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间
# 戳)。而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次之后的调用是自第一次调用以后到现在的运行时间。
# (实际上是以WIN32 上QueryPerformanceCounter()
# 为基础,它比毫秒表示更为精确)
start = time.clock()
time.sleep(1)
print(time.clock() - start)
# 返回本地时间元组
print(time.localtime())
print(time.localtime(time.time()))
# 从时间元组按照格式进行格式化输出字符串
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
# 从时间元组转换为时间戳
print(time.mktime(time.localtime()))
print(time.mktime(time.gmtime()))
print(time.mktime(datetime.now().timetuple()))
# ------------------4、datetime时间模块-------------#
# 1.datetime.date: 是指年月日构成的日期(相当于日历)
# 2.datetime.time: 是指时分秒微秒构成的一天24小时中的具体时间(相当于手表)
# 3.datetime.datetime: 上面两个合在一起,既包含时间又包含日期
# 4.datetime.timedelta: 时间间隔对象(timedelta)。一个时间点(datetime)加上一个时间间隔(timedelta)
# 可以得到一个新的时间点(datetime)。比如今天的上午3点加上5个小时得到今天的上午8点。同理,两个时间点相减会得到一个时间间隔。
# 获取当天日期
print(date.today())
# 构造函数构造日期
print(date(2018, 1, 1))
# 格式化日期输出
print(date.today().strftime("%Y%m%d"))
# 日期转换成时间元组,其中时分秒都是0
print(date.today().timetuple())
# 按照时间戳转换为日期
print(date.fromtimestamp(time.time()))
# datetime中的time模块,构造时间
t = time_datetime(8, 11, 11)
print(t)
# 格式化时间
print(t.strftime("%H-%M-%S"))
# 新建一个datetime对象,日期为今天,既可以直接调用datetime.datetime.today(),
# 也可以直接向datetime.datetime()传值,如下:
print(datetime.today())
print(datetime.now())
print(datetime(2014, 8, 15, 8, 12, 34, 790945))
# datetime.datetime.now([tz]) 当不指定时区时,和datetime.datetime.today()是一样的结果
# 格式化时间
print(datetime.now().strftime("%H-%M-%S"))
# 返回时间元组
print(datetime.now().timetuple())
print(time.mktime(datetime.now().timetuple()))
# 数据替换
d1 = datetime(2014, 8, 15, 8, 12, 34, 790945)
print(d1.replace(year=2000))
# ------------------5、timedelta-------------#
print(datetime.today())
print(datetime.today() - timedelta(days=1))
下一篇: SQL(MySQL)