一篇文章搞定Datetime 模块

Datetime 模块

  1. 如果只关注日期 不关注 时分秒 可以用datetime.date
  2. 如果只关注时分秒 不关注 年月日 可以用.datetime.time
  3. 如果日期和时分秒都关注 就用 datetime.datetime

导入相应的datetime包

Python
Python 3.6.8 |Anaconda, Inc.| (default, Dec 29 2018, 19:04:46) Type 'copyright', 'credits' or 'license' for more information IPython 6.4.0 -- An enhanced Interactive Python. Type '?' for help. PyDev console: using IPython 6.4.0 Python 3.6.8 |Anaconda, Inc.| (default, Dec 29 2018, 19:04:46) [GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin import datetime
1
2
3
4
5
6
7
8
Python 3.6.8 | Anaconda , Inc . | ( default , Dec 29 2018 , 19 : 04 : 46 )
Type 'copyright' , 'credits' or 'license' for more information
IPython 6.4.0 -- An enhanced Interactive Python . Type '?' for help .
PyDev console : using IPython 6.4.0
Python 3.6.8 | Anaconda , Inc . | ( default , Dec 29 2018 , 19 : 04 : 46 )
[ GCC 4.2.1 Compatible Clang 4.0.1 ( tags / RELEASE_401 / final ) ] on darwin
import datetime
 

datetime 能表示最大的年

Python
datetime.MAXYEAR Out[4]: 9999
1
2
3
datetime . MAXYEAR
Out [ 4 ] : 9999
 

datetime 能表示最小的年

Python
datetime.MINYEAR Out[6]: 1
1
2
3
datetime . MINYEAR
Out [ 6 ] : 1
 

获取今天的日期

Python
today = datetime.date.today() today Out[9]: datetime.date(2019, 1, 9)
1
2
3
4
today = datetime . date . today ( )
today
Out [ 9 ] : datetime . date ( 2019 , 1 , 9 )
 

获取今天的年

Python
today.year Out[11]: 2019 today.month Out[12]: 1 today.day Out[13]: 9
1
2
3
4
5
6
7
today . year
Out [ 11 ] : 2019
today . month
Out [ 12 ] : 1
today . day
Out [ 13 ] : 9
 

以上是通过 today 属性获取的 年月日

查看今天是周几

Python
today.weekday() Out[16]: 2
1
2
3
today . weekday ( )
Out [ 16 ] : 2
 

今天是周三,显示确是2,因为是从0开始的

Python
today.isocalendar() Out[18]: (2019, 2, 3) today.isoweekday() Out[19]: 3
1
2
3
4
5
today . isocalendar ( )
Out [ 18 ] : ( 2019 , 2 , 3 )
today . isoweekday ( )
Out [ 19 ] : 3
 

按照国际标准 今天是星期三

如何构造一个日期呢?

Python
birthday = datetime.date(2018,10,10) birthday.year Out[23]: 2018 birthday.month Out[25]: 10 birthday.day Out[26]: 10
1
2
3
4
5
6
7
8
birthday = datetime . date ( 2018 , 10 , 10 )
birthday . year
Out [ 23 ] : 2018
birthday . month
Out [ 25 ] : 10
birthday . day
Out [ 26 ] : 10
 

time 只关注 时分秒

Python
t = datetime.time(10,12,30) t Out[29]: datetime.time(10, 12, 30)
1
2
3
4
t = datetime . time ( 10 , 12 , 30 )
t
Out [ 29 ] : datetime . time ( 10 , 12 , 30 )
 

获取时分秒

Python
t.hour Out[31]: 10 t.min Out[32]: datetime.time(0, 0) t.second Out[33]: 30
1
2
3
4
5
6
7
t . hour
Out [ 31 ] : 10
t . min
Out [ 32 ] : datetime . time ( 0 , 0 )
t . second
Out [ 33 ] : 30
 

###既关注 年月日 又关注时分秒

Python
now = datetime.datetime.now() now Out[36]: datetime.datetime(2019, 1, 9, 15, 16, 32, 943098) now.day Out[37]: 9 now.second Out[38]: 32 now.year Out[39]: 2019 now.microsecond Out[40]: 943098
1
2
3
4
5
6
7
8
9
10
11
12
now = datetime . datetime . now ( )
now
Out [ 36 ] : datetime . datetime ( 2019 , 1 , 9 , 15 , 16 , 32 , 943098 )
now . day
Out [ 37 ] : 9
now . second
Out [ 38 ] : 32
now . year
Out [ 39 ] : 2019
now . microsecond
Out [ 40 ] : 943098
 

构造年月日 时分秒

Python
tt = datetime.datetime(2018,10,10,2,10,30) tt.day Out[43]: 10
1
2
3
4
tt = datetime . datetime ( 2018 , 10 , 10 , 2 , 10 , 30 )
tt . day
Out [ 43 ] : 10
 

时间格式化

字符串转日期时间

datetime.datetime.strptime("str",'时间格式')

strptime 字符串 parse 解析 时间

Python
s = "2018-10-20" type(s) Out[6]: str t = datetime.datetime.strptime(s,"%Y-%m-%d") t Out[8]: datetime.datetime(2018, 10, 20, 0, 0)
1
2
3
4
5
6
7
s = "2018-10-20"
type ( s )
Out [ 6 ] : str
t = datetime . datetime . strptime ( s , "%Y-%m-%d" )
t
Out [ 8 ] : datetime . datetime ( 2018 , 10 , 20 , 0 , 0 )
 

日期时间 转 字符串

datetime.datetime.strftime('时间格式')

strftime str 从from time

Python
now = datetime.datetime.now() now.strftime('%Y-%m-%d') Out[11]: '2019-01-09'
1
2
3
4
now = datetime . datetime . now ( )
now . strftime ( '%Y-%m-%d' )
Out [ 11 ] : '2019-01-09'
 

常用的时间占位符

Python
1. %Y 四位年份 2. %y 两位年份 3. %m 两位月份 4. %d 两位日期 5. %H 两位小时 6. %M 两位分钟 7. %S 两位秒 8. %f 微妙 9. %w 星期 0,。。。6
1
2
3
4
5
6
7
8
9
10
1. % Y 四位年份
2. % y 两位年份
3. % m 两位月份
4. % d 两位日期
5. % H 两位小时
6. % M 两位分钟
7. % S 两位秒
8. % f 微妙
9. % w 星期 0,。。。 6
 

Timedelta 时间跨度处理

Python
Python 3.6.8 |Anaconda, Inc.| (default, Dec 29 2018, 19:04:46) Type 'copyright', 'credits' or 'license' for more information IPython 6.4.0 -- An enhanced Interactive Python. Type '?' for help. PyDev console: using IPython 6.4.0 Python 3.6.8 |Anaconda, Inc.| (default, Dec 29 2018, 19:04:46) [GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin import datetime d = datetime.datetime(2018,10,10,2,10,30) birthdate = datetime.datetime(2016,11,12,10,2,10) d -birthdate Out[5]: datetime.timedelta(696, 58100) type(d) Out[6]: datetime.datetime diff = d -birthdate diff.days Out[8]: 696 diff.min Out[9]: datetime.timedelta(-999999999) diff.total_seconds() Out[10]: 60192500.0 diff.seconds Out[11]: 58100 d Out[12]: datetime.datetime(2018, 10, 10, 2, 10, 30)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Python 3.6.8 | Anaconda , Inc . | ( default , Dec 29 2018 , 19 : 04 : 46 )
Type 'copyright' , 'credits' or 'license' for more information
IPython 6.4.0 -- An enhanced Interactive Python . Type '?' for help .
PyDev console : using IPython 6.4.0
Python 3.6.8 | Anaconda , Inc . | ( default , Dec 29 2018 , 19 : 04 : 46 )
[ GCC 4.2.1 Compatible Clang 4.0.1 ( tags / RELEASE_401 / final ) ] on darwin
import datetime
d =    datetime . datetime ( 2018 , 10 , 10 , 2 , 10 , 30 )
birthdate = datetime . datetime ( 2016 , 11 , 12 , 10 , 2 , 10 )
d - birthdate
Out [ 5 ] : datetime . timedelta ( 696 , 58100 )
type ( d )
Out [ 6 ] : datetime . datetime
diff = d - birthdate
diff . days
Out [ 8 ] : 696
diff . min
Out [ 9 ] : datetime . timedelta ( - 999999999 )
diff . total_seconds ( )
Out [ 10 ] : 60192500.0
diff . seconds
Out [ 11 ] : 58100
d
Out [ 12 ] : datetime . datetime ( 2018 , 10 , 10 , 2 , 10 , 30 )
 

timedelta

Python
d + datetime.timedelta(days=100) Out[14]: datetime.datetime(2019, 1, 18, 2, 10, 30)
1
2
3
d + datetime . timedelta ( days = 100 )
Out [ 14 ] : datetime . datetime ( 2019 , 1 , 18 , 2 , 10 , 30 )
 

如果是减去一百天呢?

Python
d + datetime.timedelta(days=-100) Out[16]: datetime.datetime(2018, 7, 2, 2, 10, 30) d Out[17]: datetime.datetime(2018, 10, 10, 2, 10, 30)
1
2
3
4
5
d + datetime . timedelta ( days = - 100 )
Out [ 16 ] : datetime . datetime ( 2018 , 7 , 2 , 2 , 10 , 30 )
d
Out [ 17 ] : datetime . datetime ( 2018 , 10 , 10 , 2 , 10 , 30 )
 

如果加上 2000 秒呢

Python
d + datetime.timedelta(seconds=2000) Out[19]: datetime.datetime(2018, 10, 10, 2, 43, 50)
1
2
3
d + datetime . timedelta ( seconds = 2000 )
Out [ 19 ] : datetime . datetime ( 2018 , 10 , 10 , 2 , 43 , 50 )
 

可以加上小时

Python
d + datetime.timedelta(hours=100) Out[21]: datetime.datetime(2018, 10, 14, 6, 10, 30)
1
2
3
d + datetime . timedelta ( hours = 100 )
Out [ 21 ] : datetime . datetime ( 2018 , 10 , 14 , 6 , 10 , 30 )
 



  • zeropython 微信公众号 5868037 QQ号 5868037@qq.com QQ邮箱
采用PyQt5框架与Python编程语言构建图书信息管理平台 本项目基于Python编程环境,结合PyQt5图形界面开发库,设计实现了一套完整的图书信息管理解决方案。该系统主要面向图书馆、书店等机构的日常运营需求,通过模块化设计实现了图书信息的标准化管理流程。 系统架构采用典型的三层设计模式,包含数据存储层、业务逻辑层和用户界面层。数据持久化方案支持SQLite轻量级数据库与MySQL企业级数据库的双重配置选项,通过统一的数据库操作接口实现数据存取隔离。在数据建模方面,设计了包含图书基本信息、读者档案、借阅记录等核心数据实体,各实体间通过主外键约束建立关联关系。 核心功能模块包含六大子系统: 1. 图书编目管理:支持国际标准书号、中国图书馆分类法等专业元数据的规范化著录,提供批量导入与单条录入两种数据采集方式 2. 库存动态监控:实时追踪在架数量、借出状态、预约队列等流通指标,设置库存预警阈值自动提醒补货 3. 读者服务管理:建立完整的读者信用评价体系,记录借阅历史与违规行为,实施差异化借阅权限管理 4. 流通业务处理:涵盖借书登记、归还处理、续借申请、逾期计算等标准业务流程,支持射频识别技术设备集成 5. 统计报表生成:按日/月/年周期自动生成流通统计、热门图书排行、读者活跃度等多维度分析图表 6. 系统维护配置:提供用户权限分级管理、数据备份恢复、操作日志审计等管理功能 在技术实现层面,界面设计遵循Material Design设计规范,采用QSS样式表实现视觉定制化。通过信号槽机制实现前后端数据双向绑定,运用多线程处理技术保障界面响应流畅度。数据验证机制包含前端格式校验与后端业务规则双重保障,关键操作均设有二次确认流程。 该系统适用于中小型图书管理场景,通过可扩展的插件架构支持功能模块的灵活组合。开发过程中特别注重代码的可维护性,采用面向对象编程范式实现高内聚低耦合的组件设计,为后续功能迭代奠定技术基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值