一、常见时间格式
在Python中,常见的时间格式有多种,下面介绍一下常用的几种格式:
1. 时间戳
时间戳(epoch time)是指从1970年1月1日午夜(格林威治时间)以来的秒数。通常使用整数表示,可以用time()函数获得。
import time
time_now = time.time()
print("当前时间戳为:", time_now)
输出结果:
当前时间戳为: 1624905010.671396
2. 字符串时间
字符串时间是指将时间格式化成字符串来表示。常见的字符串时间格式有'%Y-%m-%d %H:%M:%S',可以用strftime()函数对时间格式进行转换。
import time
time_now = time.time()
time_str = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time_now))
print("当前时间为:", time_str)
输出结果:
当前时间为: 2021-06-29 15:50:10
3. datetime时间
datetime时间是Python中处理日期和时间的标准模块,可以用来进行日期和时间的计算、格式化等操作。
import datetime
time_now = datetime.datetime.now()
print("当前时间为:", time_now)
输出结果:
当前时间为: 2021-06-29 15:50:10.671950
二、时间格式化字符串
时间格式化字符串是指将datetime对象转换成字符串的格式,常用的格式化字符有:
- %Y: 年份,如2021
- %m: 月份,如06
- %d: 日份,如29
- %H: 小时,如15
- %M: 分钟,如50
- %S: 秒数,如10
三、时间操作函数
1. 时间戳转字符串
将时间戳转换成字符串时间,可以用localtime()函数获取当前时间的struct_time时间元组对象,然后再用strftime()函数进行格式化。
import time
time_now = time.time()
time_tuple = time.localtime(time_now)
time_str = time.strftime('%Y-%m-%d %H:%M:%S', time_tuple)
print("当前时间为:", time_str)
输出结果:
当前时间为: 2021-06-29 15:50:10
2. 字符串转时间戳
将字符串时间转换成时间戳,可以用mktime()函数。
import time
time_str = "2021-06-29 15:50:10"
time_tuple = time.strptime(time_str,'%Y-%m-%d %H:%M:%S')
time_stamp = time.mktime(time_tuple)
print("当前时间戳为:", time_stamp)
输出结果:
当前时间戳为: 1624905010.0
3. 时间加减运算
可以使用timedelta()函数对日期和时间进行加减运算。
import datetime
time_now = datetime.datetime.now()
print("当前时间为:", time_now)
# 加5天
next_day = time_now + datetime.timedelta(days=5)
print("5天后的时间为:", next_day)
# 加2小时
next_hour = time_now + datetime.timedelta(hours=2)
print("2小时后的时间为:", next_hour)
输出结果:
当前时间为: 2021-06-29 15:50:10.727981
5天后的时间为: 2021-07-04 15:50:10.727981
2小时后的时间为: 2021-06-29 17:50:10.727981
4. 计算时间差
可以用datetime对象相减的方式计算出时间差。
import datetime
time1 = datetime.datetime(2021, 6, 29, 15, 50, 10)
time2 = datetime.datetime(2021, 6, 28, 14, 30, 20)
time_delta = time1 - time2
print("时间差为:", time_delta)
输出结果:
时间差为: 1 day, 1:19:50
四、时区处理
Python中的datetime对象默认是本地时间,如果想要切换时区,可以使用pytz模块。
import datetime
import pytz
local_time = datetime.datetime.now()
print("本地时间:" , local_time)
# 设置时区为纽约(UTC-4)
nyc_time = local_time.astimezone(pytz.timezone('America/New_York'))
print("纽约时间:", nyc_time)
# 设置时区为中国(UTC+8)
china_time = local_time.astimezone(pytz.timezone('Asia/Shanghai'))
print("中国时间:", china_time)
输出结果:
本地时间: 2021-06-29 15:50:10.737357
纽约时间: 2021-06-29 11:50:10.737357-04:00
中国时间: 2021-06-29 23:50:10.737357+08:00