Python 时间与日期处理

[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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,907评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,546评论 1 289
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,705评论 0 238
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,624评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,940评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,371评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,672评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,396评论 0 195
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,069评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,350评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,876评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,243评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,847评论 3 231
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,004评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,755评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,378评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,266评论 2 259

推荐阅读更多精彩内容

  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 2,678评论 0 8
  • 原文链接:http://www.cnblogs.com/lhj588/archive/2012/04/23/246...
    qtruip阅读 1,261评论 0 0
  • 在Python中,日期和时间的应用非常普遍。在实际应用中,大部分数据的记录和日志的处理都需要使用时间。这里将介绍P...
    泷汰泱阅读 814评论 0 0
  • 前言 datetime是python的内置模块,用来处理日期和时间。该模块常用的类有: 类名功能说明date日期对...
    python大数据分析阅读 2,295评论 0 6
  • 亲爱的康康,眨眼毕业三年半了,刚开始总觉得仅是放假而已,后来却渐渐的有了新的圈子。那时毕业大言不惭说我们寝室要时常...
    木易然阅读 323评论 0 0