美文网首页
Python 时间与日期处理

Python 时间与日期处理

作者: a479a910abe7 | 来源:发表于2020-03-05 11:02 被阅读0次

[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

相关文章

网友评论

      本文标题:Python 时间与日期处理

      本文链接:https://www.haomeiwen.com/subject/mfmtrhtx.html