Python3 对时间的操作

1. time模块
time模块的时间表示形式为时间元组struct_time,格式如下:

序号 字段
0 4位数年 2008
1 1到12
2 1到31
3 小时 0到23
4 分钟 0到59
5 0到61(60或61是闰秒)
6 一周的第几日 0到6(0是周一)
7 一年的第几日 1到366(儒略历)
8 夏令时 -1,0,1,-1是决定是否为夏令时的旗帜

(1) 时间戳转struct_time

import time
time_stamp = 1562258144
struct_time = time.localtime(time_stamp)

(2) struct_time转字符串

date_str = time.strftime("%Y-%m-%d %H:%M:%S", struct_time)

(3) 字符串转struct_time

date_str = "30 Nov 00"
struct_time = time.strptime(date_str, "%d %b %y")

(4) struct_time转时间戳

time_stamp = time.mktime(struct_time)

(5) 获取当前时间戳

current_stamp = time.time()

2. datetime模块
该模块包含3个类用于保存时间:
* datetime.date(year, month, day)
* datetime.time(hour, minute, second, microsecond, tzinfo)
* datetime.datetime(year, month, day, hour, minute, second, microsecond, tzinfo)
还有个类用于改变时间:
* datetime.timedelta
(1) 时间戳转date/datetime

import datetime
time_stamp = 1562258144
d = datetime.date.fromtimestamp(time_stamp)
dt = datetime.datetime.fromtimestamp(time_stamp)

(2) date/datetime转time.struct_time

struct_time = dt.timetuple()

(3) date/datetime转字符串

date_str = dt.strftime("%a %b %d %H:%M:%S %Y")

(4) 字符串转date/datetime

date_str = "30 Nov 00"
dt = datetime.datetime.strptime(date_str, "%d %b %y")

(5) date/datetime转时间戳

time_stamp = dt.timestamp()

(6) 获取当前date/datetime

dt = datetime.datetime.now()

(7) 调整时间

new_dt = dt + datetime.timedelta(days=-6)
new_dt = dt - datetime.timedelta(hours=8)

附录:
* %y 两位数的年份表示(00-99)
* %Y 四位数的年份表示(000-9999)
* %m 月份(01-12)
* %d 月内中的一天(0-31)
* %H 24小时制小时数(0-23)
* %I 12小时制小时数(01-12)
* %M 分钟数(00=59)
* %S 秒(00-59)
* %a 本地简化星期名称
* %A 本地完整星期名称
* %b 本地简化的月份名称
* %B 本地完整的月份名称
* %c 本地相应的日期表示和时间表示
* %j 年内的一天(001-366)
* %p 本地A.M.或P.M.的等价符
* %U 一年中的星期数(00-53)星期天为星期的开始
* %w 星期(0-6),星期天为星期的开始
* %W 一年中的星期数(00-53)星期一为星期的开始
* %x 本地相应的日期表示
* %X 本地相应的时间表示
* %Z 当前时区的名称
* %% %号本身

发表评论