1. 基本定义

1.1 时间戳

  时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数(或总毫秒数)。网上有很多时间戳在线转换工具,可以自行计算验证。

1.2 ISO日期

  国际标准ISO 8601,是国际标准化组织的日期和时间的表示方法,全称为《数据存储和交换形式·信息交换·日期和时间的表示方法》。关于该文件可以参考:ISO 8601。ISO日期的常用格式如下:

YYYY-MM-DDThh:mm:ss[.mmm]TZD

其中各个元素说明如下:

元素 说明
YYYY 年由4位数组成,以公历公元1年为0001年,以公元前1年为0000年,公元前2年为-0001年,其他以此类推。
MM 表示2位数的月份,从01到12
DD 表示2位数的天,从01到31
T 用来指示时间元素的开始字符
hh 表示两位数的小时,从00到23,不包括AM/PM
mm 表示两位数的分钟,从00到59
ss 表示两位数的秒,从00到59
mmm 表示三位数的毫秒数,从000到999
TZD TZD表示时区指示符:Z或+hh:mm或-hh:mm,+或-表示时区距离UTC(世界标准时间)时区多远。例如,中国标准时间以北京所在的东八区位准,即为:+08:00

2. 日期date

2.1 创建日期

可以使用datetime中的date类来构建日期,其常用方法如下:

  • date.fromisocalendar():使用年、周数、星期构建日期;
  • date.fromisoformat(): 使用字符串形式的ISO日期创建日期变量;
  • date.fromordinal(): 创建序数对应的日期。1对应0001-01-01,2对应0001-01-02,以此类推;
  • date.fromtimestamp(): 获取时间戳对应的日期;
  • date.today(): 获取当前日期;

举例如下:以下代码中day1、day2、day3的结果均为2022-07-06,day3和day5的结果为当前日期;

from datetime import date
import timeday1=date.fromisocalendar(2022,27,3)
day2=date.fromisoformat('2022-07-06')
day3=date.today()
day4=date.fromordinal(738342)
day5=date.fromtimestamp(time.time()) #time.time()获取当前时间的时间戳
2.2 日期常用操作

使用date创建的日期变量的常用属性和方法如下:

属性或方法 作用
day\month\year 获取日期变量的年、月、日等属性信息
ctime() 将日期转化为ctime()格式
isocalendar() 将日期转化为日历格式
isoformat() 将日期转化为ISO 8601格式:YYYY-MM-DD
toordinal() 返回当前日期的序数
isoweekday() 获取当前日期的星期数,Mon=1, … \dots …,Sun=7
weekday() 获取当前日期的星期数,Mon=0, … \dots …, Sun=6
strftime() 按指定格式输出日期
replace() 修改日期指定部分生成新的日期变量
timetuple() 以tuple返回日期的各个部分

具体用法举例如下:

from datetime import date
day1=date.fromisocalendar(year=2022, week=27, day=5)
#返回年/月/日
day,month,year=day1.day,day1.month,day1.year
print("年:{},月:{},日:{}".format(year,month,day))
#返回星期
weekday1,weekday=day1.isoweekday(),day1.weekday()
print("ISO格式的星期:{},普通格式的星期:{}".format(weekday1,weekday))
#返回指定格式的日期
str_date=day1.strftime('%Y/%m/%d')
print("指定格式的日期:{}".format(str_date))
#修改日期
day2=day1.replace(year=2021)
print("ctime()格式的新日期:{}".format(day2.ctime()))

其结果如下:

补充:strftime()中format代码如下:

%Y  Year with century as a decimal number.
%m  Month as a decimal number [01,12].
%d  Day of the month as a decimal number [01,31].
%H  Hour (24-hour clock) as a decimal number [00,23].
%M  Minute as a decimal number [00,59].
%S  Second as a decimal number [00,61].
%z  Time zone offset from UTC.
%a  Locale's abbreviated weekday name.
%A  Locale's full weekday name.
%b  Locale's abbreviated month name.
%B  Locale's full month name.
%c  Locale's appropriate date and time representation.
%I  Hour (12-hour clock) as a decimal number [01,12].
%p  Locale's equivalent of either AM or PM.

3. 时间time

datetime中的time类提供了时间变量的定义及其常用操作。其常用方法如下:

属性或方法 作用
fromisoformat() 使用字符串形式的ISO时间创建时间变量
hour\minute\second\microsecond 获取时间变量的时、分、秒、毫秒属性
isoformat() 将时间变量按照ISO的时间格式输出
strftime() 将时间便变量按指定格式输出
replace() 替换时间变量的部分属性生成新的时间变量

其具体用法如下:

from datetime import time
#创建时间
t1=time.fromisoformat('07:24:38')
#返回时、分、秒等信息
h,m,s=t1.hour,t1.minute,t1.second
print("时:{},分:{},秒:{}".format(h,m,s))
t1_str=t1.strftime('%H:%M:%S')
print("指定格式的时间为:{}".format(t1_str))
t2=t1.replace(minute=45)
print("ISO格式的时间为:{}".format(t2))

其结果如下:

4. 日期时间datetime

  除了分别创建日期变量和时间变量之外,datetime中的datetime类可以直接创建日期时间变量,这种变量的创建及其常用操作与日期变量和时间变量类似,这里只做简单介绍。举例如下:

from datetime import datetime
#创建日期时间格式
dt1=datetime.fromisoformat('2022-07-08 12:23:45')
dt2=datetime.now() #当前日期时间
#返回相关属性
print("当前日期时间:{}".format(dt2.isoformat()))
y,m,d,h,m1,s=dt1.year,dt1.month,dt1.day,dt1.hour,dt1.minute,dt1.second
print("年:{},月:{},日:{},时:{},分:{},秒:{}".format(y,m,d,h,m1,s))
dt3=dt1.replace(day=1)
print("指定格式的日期时间:{}".format(dt3.strftime('%Y/%m/%d %H:%M:%S')))

其结果如下:

其他常用方法如下:

方法 作用
strptime() 将字符串按照指定的格式转化为日期时间变量
timestamp() 返回日期对应的时间戳值
utcfromtimestamp() 将POSIX时间戳转化为UTC日期时间
utcnow() 返回当前日期时间

这里有一点要说明,datetime包中的ISO日期格式似乎与ISO 8601中的格式不完全一致,datetime中的ISO日期格式为:YYYY-MM-DDT[HH[:MM[:SS[.mmm[uuu]]]]][+HH:MM],这里不能使用时区指示’Z’。具体如下:

5. 时间长度timedelta

  时间长度timedelta表示两个日期或日期时间类型变量的差值。其使用如下:

from datetime import date,time,datetime,timedeltadate1=date.fromisoformat('2022-07-06')
date2=date.fromisoformat('2022-08-13')
td1=date2-date1
print(td1)dt1=datetime.fromisoformat('2022-08-13T13:32:23+08:00')
dt2=datetime.fromisoformat('2022-08-13T12:23:34+08:00')
td2=dt2-dt1
print(td2)

其结果如下:

这里要注意,计算两个datetime变量的时间长度时,datetime变量必须在同一个时区,否则会报错:can’t subtract offset-naive and offset-aware datetimes,具体如下:

在上述案例中,dt1表示的是东八区的时间,dt2是世界协调时。

参考资料

  1. https://blog.csdn.net/youngzil/article/details/125212861

Python:日期和时间包datetime的用法相关推荐

  1. Python学习八:pip 最常用命令、pip升级、pip 清华大学开源软件镜像站、Python日期和时间(Time模块、日历(Calendar)模块)

    pip 是 Python 包管理工具,该工具提供了对Python 包的查找.下载.安装.卸载的功能. 注意:Python 2.7.9 + 或 Python 3.4+ 以上版本都自带 pip 工具. p ...

  2. Python时间包datetime的使用

    目录 datetime包的常用功能 datetime包中的常用方法 python的常用时间格式化符号 认识datetime包 日期与时间的结合体-date and time 获取当前时间 获取时间间隔 ...

  3. datetime库:Python日期与时间值管理计算

    目录 前言 datetime.date datetime.time datetime.timedelta 构造函数 日期运算 比较日期 计算秒数 datetime.datetime combine() ...

  4. Python 日期和时间用法超强总结

    时间无疑是生活各个方面中最关键的因素之一,因此,记录和跟踪时间变得非常重要.在 Python 中,可以通过其内置库跟踪日期和时间.今天我们来介绍关于 Python 中的日期和时间,一起来了解如何使用t ...

  5. python 日期和时间处理(time,datetime模块讲解)

    在现实生活中,我们常常遇到时间序列任务.所以今天讲解下日期和时间处理. Python 日期时间(datetime) 1.获取当前时间 import datetimedatetime_object = ...

  6. python中年月日,python日期和时间

    今天是第17天,在Python中通常用时间戳,时间字符串和元组三种方式表示,今天学习的是time和datetime常用时间和日期函数的用法 一.日期和时间的处理 1,时间戳 指1970年1月1日0时0 ...

  7. python日期和时间的操作方法

    日期和时间可以说是一种独特的数据类型,既不同于数字,也不同于字符串,而且有自己独特的运算规则.在不同的编程语言中,都会将日期和时间与常规的数据类型独立开来,单独进行操作.在python的内置模块中,时 ...

  8. Python 内置模块之 时间模块 datetime

    概述 datatime模块重新封装了time模块,提供更多接口,datetime库定义了2个常量和5个类. 2个常量分别是: MINYEAR=1 MAXYEAR=9999 5个类分别是: date类: ...

  9. $python日期和时间的处理

    总结一下python中对日期和时间的常用处理方法. 准备 import time,datetime 常用操作 输出当前的日期时间 方式一: now = time.localtime()print '[ ...

最新文章

  1. 智源论坛Live丨青年科学家线上报告会日程发布
  2. React学习(1)——JSX语法与React组件
  3. C++难题之多态性详细解释
  4. sqlprofiler 常用调试方法
  5. dalvik虚拟机执行流程_程序员必备的一些流程图
  6. 并发容器与框架——并发容器(一)
  7. 信息学奥赛一本通(2018:【例4.3】输出奇偶数之和)
  8. 梯度消失与梯度爆炸原因剖析
  9. python爬知识星球付费数据_Python 爬取知识星球数据
  10. 清理迅雷系列软件数据记录【破坏性】
  11. 实验一:marlab安装调试
  12. 计算机开机数字键盘解锁,数字键盘怎么解锁
  13. android编辑keynote,Keynote添加和编辑母版幻灯片
  14. 实训十二:交换机隔离VLAN配置
  15. python操作word文档,合并
  16. 论文阅读:Face-Mic: Inferring Live Speech and Speaker Identity via Subtle Facial Dynamics Captured by
  17. Strategic game poj1463
  18. 工作一般预留什么邮箱? 注册工作邮箱谨防几大雷区!
  19. 2021CCPC女生专场
  20. MySql 数据库 管理员密码忘记怎么办?

热门文章

  1. uni-app 海康实时视频预览、录像回放、倍数回放、抓图、声音、录像、语言对讲、鱼眼 V2
  2. Echarts 动态数据+时间轴格式化
  3. 又漏标尺寸了?看SOLIDWORKS MBD如何帮你解决!
  4. 大数据背景下 个性化服务如何成功落地?
  5. 高数:无穷小与无穷大
  6. k8s 高级调度 亲和力和反亲和力、绑定标签、污点容忍污点
  7. java 线程池 execute_Java线程池的submit和execute方法区别
  8. “教育+直播”助力教育行业教学模式创新升级
  9. mfc的CListCtrl关于InsertItem
  10. onclick addEventListener