[TOC]
内置库
time 模块
https://docs.python.org/3/library/time.html#
class time.struct_time
实例
索引 | 实例属性 | 含义 | 值 |
---|---|---|---|
0 | tm_year | 年 | eg: 2020 |
1 | tm_mon | 月 | range [1, 12] |
2 | tm_mday | 日 | range [1, 31] |
3 | tm_hour | 小时 | range [0, 23] |
4 | tm_min | 分钟 | range [0, 59] |
5 | tm_sec | 秒 | range [0, 61] |
6 | tm_wday | 周 | range [0, 6],周一为 0 |
7 | tm_yday | 天 | range [1, 366] |
8 | tm_isdst | 时令 | 0, 1 或 -1 |
N/A | tm_zone | 时区名称缩写 | |
N/A | tm_gmtoff | - | 以秒为单位的 UTC 以东偏离 |
示例代码
导入库:
import time
获取当前时间时间戳
t = time.time()
print(t) # 原始时间数据
print(int(t)) # 秒级时间戳
print(int(t * 1000)) # 毫秒级时间戳
print(int(t * 1000000)) # 微秒级时间戳
- 获取当天的年月日
time.localtime().tm_year # 年
time.localtime().tm_mon # 月
time.localtime().tm_mday # 日
- 获取对应时间的格式化字符串
# 当前时间
time.asctime() # 'Wed Mar 4 17:34:54 2020'
time.ctime() # 'Wed Mar 4 17:34:54 2020'
# 指定时间
time.asctime(time.localtime(0)) # 'Thu Jan 1 08:00:00 1970'
time.ctime(0) # 'Thu Jan 1 08:00:00 1970'
- 时间戳转换成时间字符串
timestamp = 1577808000
time_local = time.localtime(timestamp)
time_str = time.strftime('%Y-%m-%d %H:%M:%S', time_local) # '2020-01-01 00:00:00'
- 时间字符串转换成时间戳
time_str = '2020-01-01 00:00:00'
struct_time = time.strptime(time_str, '%Y-%m-%d %H:%M:%S')
timestamp = int(time.mktime(struct_time)) # 1577808000
datetime 模块
https://docs.python.org/3/library/datetime.html#
class datetime.datetime
常用属性和方法
类属性 | 含义 | 值 |
---|---|---|
min | 最早的可表示的 datetime | datetime(1, 1, 1, 0, 0) |
max | 最晚的可表示的 datetime | datetime(9999, 12, 31, 23, 59, 59, 999999) |
类方法 | 含义 | 返回值 |
---|---|---|
today() | 返回当前本地 datetime (tz=None) | datetime 实例对象 |
now(tz=None) | 返回当前时区 datetime | datetime 实例对象 |
utcnow() | 返回当前 UTC datetime | datetime 实例对象 |
fromtimestamp(timestamp, tz=None) | 返回指定时间戳对应时区时间的 datetime | datetime 实例对象 |
utcfromtimestamp(timestamp) | 返回指定时间戳对应 UTC 时间的 datetime | datetime 实例对象 |
fromisoformat(date_string) | 将符合 ISO 8601 日期与时间组合表示法的字符串转换成 datetime | datetime 实例对象 |
strptime(date_string, format) | 将指定时间字符串转换成对应的时间 | datetime 实例对象 |
实例属性 | 含义 | 值 |
---|---|---|
year | 年 | |
month | 月 | |
day | 日 | |
hour | 时 | |
minute | 分 | |
second | 秒 | |
microsecond | 微秒 |
实例方法 | 含义 | 返回值 |
---|---|---|
date() | 返回与 datetime 年月日相同的 date 对象 | datetime.date(...) |
time() | 返回与 datetime 时分秒微秒以及 fold 相同的 time 对象 | datetime.time(...) |
timetuple() | 返回 datetime 相同的 time.struct_time 对象 | time.struct_time(...) |
utctimetuple() | ||
timestamp() | ||
weekday() | 返回 datetime 星期的序数 | rang(7) |
isoformat(...) | 返回 datetime 符合 ISO 8601 日期与时间组合表示法的字符串 | eg: '2020-02-02T02:02:02.222222' |
ctime() | 返回 datetime 的格式化字符串 | eg: 'Thu Mar 5 10:43:53 2020' |
strftime(format) | 将 datetime 转换成对应格式的字符串 |
示例代码
导入库:
from datetime import datetime
获取当前日期和时间:
datetime.now() # 2017-12-24 21:56:22.698000
- 获取当天的年月日
now = datetime.today()
# now = datetime.fromtimestamp(time.time()) 同上
now.year # 年
now.month # 月
now.day # 日
- 格式化成需要的时间:
datetime.now().strftime('%Y-%m-%d_%H-%M-%S') # 2020-02-02_02-02-02
- 格式化为 ISO 8601 的日期和时间的组合表示法
- 方式一:
from datetime import datetime, timezone, timedelta datetime.now(tz=timezone(timedelta(hours=8))).isoformat()
- 方式二:
import pytz datetime.now(tz=pytz.timezone('Asia/Shanghai')).isoformat()
- 方式三:
datetime.now().strftime('%Y-%m-%dT%T+08:00')
calendar 模块
https://docs.python.org/3/library/calendar.html#
第三方库
dateutil 库
- 安装:
$ pip install python-dateutil
- 导入库:
附:
术语表:
UTC (Coordinated Universal Time, 国际协调时间)
以原子时秒长为基础,在时刻上尽量接近于世界时的一种时间计量系统。
GMT (Greenwich Mean Time, 格林威治标准时间)
格林尼治所在地的标准时间,也是表示地球自转速率的一种形式。以地球自转为基础的时间计量系统。
DST (Daylight Saving Time, 日光节约时间)
为了节约能源人为规定的一种时间。
CST
可视为如下4个不同的时区的缩写:
美国中部时间:Central Standard Time (USA) UT-6:00
澳大利亚中部时间:Central Standard Time (Australia) UT+9:30
中国标准时间:China Standard Time UT+8:00
古巴标准时间:Cuba Standard Time UT-4:00
时间参数格式:
%a 星期几的简写
%A 星期几的全称
%b 月份的简写
%B 月份的全称
%c 标准的日期的时间串
%C 年份的后两位数字
%d 十进制表示的每月的第几天
%D 月/天/年
%e 在两字符域中,十进制表示的每月的第几天
%F 年-月-日
%g 年份的后两位数字,使用基于周的年
%G 年分,使用基于周的年
%h 简写的月份名
%H 24小时制的小时
%I 12小时制的小时
%j 十进制表示的每年的第几天
%m 十进制表示的月份
%M 十时制表示的分钟数
%n 新行符
%p 本地的AM或PM的等价显示
%r 12小时的时间
%R 显示小时和分钟:hh:mm
%S 十进制的秒数
%t 水平制表符
%T 显示时分秒:hh:mm:ss
%u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)
%U 第年的第几周,把星期日做为第一天(值从0到53)
%V 每年的第几周,使用基于周的年
%w 十进制表示的星期几(值从0到6,星期天为0)
%W 每年的第几周,把星期一做为第一天(值从0到53)
%x 标准的日期串
%X 标准的时间串
%y 不带世纪的十进制年份(值从0到99)
%Y 带世纪部分的十制年份
%z,%Z 时区名称,如果不能得到时区名称则返回空字符。
%% 百分号
参考来源
https://docs.python.org/zh-cn/3/library/time.html
https://docs.python.org/3/library/datetime.html#
https://zhuanlan.zhihu.com/p/23679915