Python日期和时间

1 datetime模块

import datetime

1. 1 date类

1.1.1 创建日期对象

d = datetime.date(2019, 4, 13)
print(d)  # 显示2019-4-13

1.1.2 获取当前日期

today_date = datetime.date.today()
today_year = today_date.year    # 获取当前年份
today_month = today_date.month  # 获取当前月份
today_day = today_date.day      # 获取当前日

1.1.3 从时间戳获取日期

d = datetime.date.fromtimestamp(1576244364)  # 特定日期到1970.1.1的秒数

1.2 time类

1.2.1 创建时间对象

t = datetime.time(hour=0, minute=0, second=0, microsecond=0)

t = datetime.time(11, 34, 56, 234566)
print(t)  				# 显示11:34:56.234566
print(t.hour)			# 显示11
print(t.minute)			# 显示34
print(t.second)			# 显示56
print(t.microsecond)	# 显示234566

1.3 datetime类

1.3.1 创建datetime对象

dt = datetime.datetime(year, month, day, hour, minute, second, microsecond)
参数year, month, day必需

dt = datetime.datetime(2019, 11, 28, 23, 55, 59, 342380)
print(dt)  				# 显示2019-11-28 23:55:59.342380
print(dt.year)			# 显示2019
print(dt.month)			# 显示11
print(dt.day)			# 显示28
print(dt.hour)			# 显示23
print(dt.minute)		# 显示55
print(dt.second)		# 显示59
print(dt.microsecond)	# 显示342380
print(dt.timestamp())	# 显示时间戳(1970.1.1到特定日期的秒数)

还可以使用datetime对象的方法直接创建time对象

dt = datetime.datetime.now()
t = dt.time()
print(t)

1.3.2 时间戳和日期时间的相互转换

  1. 时间戳转换为日期时间
timestamp = 1545730073
dt = datetime.datetime.fromtimestamp(timestamp)
print(dt)
  1. 日期时间转换为时间戳
now = datetime.datetime.now()
timestamp = datetime.datetime.timestamp(now)
print(timestamp)

1.4 timedelta类

1.4.1 日期、时间的差值

t1 = datetime.datetime(2018, 7, 12, 7, 9, 33)
t2 = datetime.datetime(2019, 6, 10, 5, 55, 13)
t3 = t1 - t2  # t3是timedelta类的对象
print(t3)
print(f"Type of t3 is {type(t3)}")

这里注意到t3是负值,我们可以用求绝对值的方法将其符号转换为+

print(abs(t3))

1.4.2 持续时间

使用total_seconds()方法获得timedelta对象的总秒数

t = timedelta(days = 5, hours = 1, seconds = 33, microseconds = 233423)
print("total seconds =", t.total_seconds())  # 显示435633.233423

2 Python格式日期时间

2.1 strftime()

作用:将一个date、time、datetime对象转换为固定的格式,返回一个字符串

now = datetime.datetime.now()
now_str = now.strftime('%Y-%m-%d %H:%M:%S')
print(now_str)

2.1.1 time模块中也有此方法

import time

t = time.localtime()
t_str = time.strftime('%H:%M:%S', t)
print(t_str)

2.2 strptime()

作用:使用一个字符串创建一个datetime对象

date_str = '21 June, 2020'
date_object = datetime.datetime.strptime(date_str, '%d %B, %Y')
print(date_object)

'%B’用于月的全称(June、July等)

格式化代码清单如下:
在这里插入图片描述
在这里插入图片描述

3 time模块

3.1 time()

返回当前至1970-1-1 00:00:00的秒数

import time

seconds = time.time()
print(seconds)

3.2 ctime()

以至1970-1-1 00:00:00的秒数为参数,返回本地时间字符串

seconds = 1545925769.9618232
local_time = time.ctime(seconds)
print(local_time)

3.3 sleep()

给定的秒数内,暂停当前线程的执行

print("I'm handsome!")
interval = 5
time.sleep(interval)
print(f"After {interval} seconds, I'm still handsome!")

3.4 struct_time类

创建一个struct_time类的对象

time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27, 
                    tm_hour=6, tm_min=35, tm_sec=17, 
                    tm_wday=3, tm_yday=361, tm_isdst=0)

参数如下:
在这里插入图片描述
其中,tm_isdst表示当前是否为夏令时,1表示是,0表示不是,-1表示不确定

3.5 localtime()

以至1970-1-1 00:00:00的秒数为参数,返回struct_time对象

local_time = time.localtime(1545925769)
print(local_time)
print(local_time.tm_year)

3.6 gmtime()

以至1970-1-1 00:00:00的秒数为参数,以UTC返回struct_time对象

3.7 mktime()

是localtime()的反函数,传入struct_time对象或其9个参数构成的元组

3.8 asctime()

传入struct_time对象或其9个参数构成的元组,返回表示struct_time对象的字符串

t = (2018, 12, 28, 8, 44, 4, 4, 362, 0)
t_str = time.asctime(t)
print(t_str)

3.9 strftime()

传入格式化字符串和struct_time对象,作用是将struct_time对象输出表示为格式化字符串形式

t = time.localtime()
t_str = time.strftime('%Y-%m-%d %H:%M:%S', t)
print(t_str)

3.10 strptime()

传入struct_time对象和格式化字符串,作用是将格式化字符串转换为struct_time对象

t_str = '21 July, 2020'
t = time.strptime(t_str, '%d %B, %Y')
print(t)
  • 26
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值