Python学习笔记——time

本文介绍了Python中time和datetime模块的基本用法,包括时间戳、格式化字符串、struct_time以及它们之间的转换。重点讲解了常用方法如time.time(), strftime(), ctime(), 和 datetime模块的实例,为开发者提供时间操作的实用指南。


前言

在日常的编程中,时间的处理应是最常用的过程之一,在Python中,一般使用模块time与datetime,本文总结时间访问和转换的基础内容。

时间的表现形式

  • 时间戳(timestamp):表示的是自国际标准时间 1970 年 1 月 1 日零时以来经过的总秒数。(使用time.gmtime(0)了解给定平台上的时代)
  • 格式化的时间字符串(Format String):如time.strftime("%Y-%m-%d %H:%M:%S")得到时间2021-02-19 09:23:11
  • 结构化的时间(struct_time):struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)

常用方法

time简单示例

代码如下(示例):

import time
print(time.time())  #当前时间的时间戳
print(time.strftime("%Y-%m-%d  %H:%M:%S"))  #格式化的时间字符串
print(time.ctime(16130593.33))      #无参数时返回当前时间
time.sleep(1)   #暂停1秒
print(time.struct_time)
print(time.gmtime(0))           #UTC纪元时间
print(time.gmtime())           #UTC时区  struct_time
print(time.localtime())        #本地时间  struct_time

执行结果

1613701656.2233431
2021-02-19 10:27:36
Tue Jul 7 00:43:13 1970
<class ‘time.struct_time’>
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
time.struct_time(tm_year=2021, tm_mon=2, tm_mday=19, tm_hour=2, tm_min=27, tm_sec=37, tm_wday=4, tm_yday=50, tm_isdst=0)
time.struct_time(tm_year=2021, tm_mon=2, tm_mday=19, tm_hour=10, tm_min=27, tm_sec=37, tm_wday=4, tm_yday=50, tm_isdst=0)

格式转换

import time
print(time.localtime(15648461))#把时间戳转换成结构化时间
print(time.mktime(time.localtime()))#将结构化时间转换成时间戳
print(time.strftime("%Y-%m-%d",time.localtime()))#将结构化时间转换成字符串时间
print(time.strftime('%Y/%m/%d  %H:%M:%S'))#小写的y是取得年的后两位
print(time.strptime('2021-01-12',"%Y-%m-%d"))#将字符串时间转换成结构化时间

执行结果:

time.struct_time(tm_year=1970, tm_mon=7, tm_mday=1, tm_hour=10, tm_min=47, tm_sec=41, tm_wday=2, tm_yday=182, tm_isdst=0)
1613702529.0
2021-02-19
2021/02/19 10:42:09
time.struct_time(tm_year=2021, tm_mon=1, tm_mday=12, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=12, tm_isdst=-1)

strftime() 中的指示字符替换:

  • %d 十进制数 [01,31] 表示的月中日。
  • %H 十进制数 [00,23] 表示的小时(24小时制)
  • %m 十进制数 [01,12] 表示的月。
  • %M 十进制数 [00,59] 表示的分钟。
  • %S 十进制数 [00,61] 表示的秒。
  • %w 十进制数 [0(星期日),6] 表示的周中日。
  • %W 十进制数 [00,53] 表示的一年中的周数(星期一作为一周的第一天)作为。在第一个星期一之前的新年中的所有日子被认为是在第0周。
  • %y 十进制数 [00,99] 表示的没有世纪的年份。
  • %Y 十进制数表示的带世纪的年份。
  • %c 本地化的适当日期和时间表示。
  • %a 本地化的缩写星期中每日的名称。
  • %b 本地化的月缩写名称。
  • %A 本地化的星期中每日的完整名称。
  • %B 本地化的月完整名称。

datatime

直接看代码说明了

import datetime
print(datetime.datetime.now())  #2021-02-19 11:18:41.704663
print(datetime.date.fromtimestamp(time.time()) )  # 时间戳直接转成日期 2021-02-19
print(datetime.datetime.now() )
print(datetime.datetime.now() + datetime.timedelta(5)) #当前时间+5天
print(datetime.datetime.now() + datetime.timedelta(-1)) #当前时间-1天
print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时
print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分
c_time  = datetime.datetime.now()
print(c_time.replace(minute=3,hour=2)) #时间替换

总结

常用时间形式转换方法
timestamp----struct_timelocaltime,gmtime
struct_time----timestampmktime
struct_time----Format Stringstrftime,asctime
Format String----struct_timestrptime
timestamp---- Format Stringctime

时间的使用方法还有很多,恰当的应用可以给编码带来很多便利,但要完全熟悉还需要再下点工夫,先掌握这些常用的,在后面的应用中逐步提升应该是一个合适的方法。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值