菜鸟笔记
提升您的技术认知

python操作日期和时间-ag真人游戏

"""
开发程序时,经常需要获取两个代码位置在执行时的时间差,比如,想知道某个函数执行大概耗费了多少时间,就可以使用time.time()来做。
"""
import time
def func1():
    s = 0
    for i in range(1,9999):
        if i % 2 == 0:
            s  = i
        else:
            s -= i
# time.time() 会返回 从 1970年1月1日0点(所谓的epoch时间点) 到 当前时间的 经过的秒数 ,可以简称为秒数时间。 
before = time.time()
func1()
after = time.time()
print(f"调用func1,花费时间{
  after-before}")
调用func1,花费时间0.00690770149230957
"""
以指定格式字符串显示时间,是非常常用的,比如日志里面的时间戳。
"""
from datetime import datetime
print(str(datetime.now()))
# 指定输出的时间格式
print(datetime.now().strftime('%y-%m-%d && %h:%m:%s'))
# 使用time库来格式化显示字符串
print(time.strftime('%y-%m-%d %h:%m:%s',time.localtime()) )
2022-11-13 21:11:43.697226`在这里插入代码片`
2022-11-13 && 21:11:43
2022-11-13 21:11:43
"""
如果要将某个指定秒数时间(从epoch时间点开始计算),而不是当前时间,转化为字符串格式,可以这样写
"""
print(time.localtime(1434502529))
time.strftime('%y-%m-%d %h:%m:%s',time.localtime(1434502529)) 

time.struct_time(tm_year=2015, tm_mon=6, tm_mday=17, tm_hour=8, tm_min=55, tm_sec=29, tm_wday=2, tm_yday=168, tm_isdst=0)
'2015-06-17 08:55:29'
# 反过来,如果要将字符串指定的时间,转化为秒数时间,可以这样
print(int(time.mktime(time.strptime('2015-08-01 23:59:59', '%y-%m-%d %h:%m:%s'))))
"""
有的时候,程序获取的时间是 iso 8601 格式的字符串。
比如:
2008-09-03t20:56:35.450686 00:00
2008-09-03t20:56:35.450686z
通过如下方法转化为 本地格式
"""
import dateutil.parser
# 字符串时间 转化为 datetime 对象
dt = dateutil.parser.isoparse('2008-09-03t20:56:35.450686 00:00')
# 转化为本地时区的 datetime 对象
localdt = dt.astimezone(tz=none)
# 产生本地格式 字符串
localdt.strftime('%y-%m-%d %h:%m:%s')
'2008-09-04 04:56:35'
# 要获取 当前时间 的 年、月、日、时、分、秒、星期几 对应的数字,可以使用datetime库
from datetime import datetime
print(datetime.now())
print("年:",datetime.now().year)
print("月:",datetime.now().month)
print("日:",datetime.now().day)
print("时:",datetime.now().hour)
print("分:",datetime.now().minute)
print("秒:",datetime.now().second)
print("毫秒:",datetime.now().microsecond)
print("星期几:",datetime.now().weekday())
2022-11-13 21:11:43.766226
年: 2022
月: 11
日: 13
时: 21
分: 11
秒: 43
毫秒: 766226
星期几: 6
# 如果要获取的是 某个指定时间,比如 “2018-6-24”,而不是当前时间,对应的星期几,使用 datetime类的 strptime方法,先产生对应的 datetime对象
# 要计算出 2018年6月24日 是星期几 
thatday = "2018-6-24"
from datetime import datetime
# 先把字符串表示的日期转化为 datetime 对象
theday = datetime.strptime(thatday, "%y-%m-%d")
#再获取星期几
theday.weekday()  
6
"""
如果我们想知道,2018年6月24日 往后推120天,是什么日期?星期几?
往前推120天,又是什么日期?星期几?
"""
thatday = "2018-6-24"
from datetime import datetime,timedelta
theday = datetime.strptime(thatday, "%y-%m-%d").date()
# 后推120天 就是   timedelta(days=120)
target = theday   timedelta(days=120)
print(target)
print(target.weekday())
# 前推120天 就是 - timedelta(days=120)
target = theday - timedelta(days=120)
print(target)
print(target.weekday())
2018-10-22
0
2018-02-24
5
thatday = "2018-6-28"
from datetime import datetime,timedelta
theday = datetime.strptime(thatday, "%y-%m-%d").date()
print(thatday)
# 这就是 2018-6-30 那一周的周一。用当前日期 减去星期几 就得到是星期一的日期
weekmonday = theday - timedelta(days=theday.weekday())
print(timedelta(days=theday.weekday()))
print(weekmonday)
2018-6-28
3 days, 0:00:00
2018-06-25
# 最方便的方法是使用 calendar 模块里面的 函数
from calendar import monthrange
# monthrange返回的是元组:第一个元素是指定月第一天是星期几;第二个元素是指定月有多少天
mr = monthrange(2011, 2)
# 得到2011年2月有多少天
print(mr[1])
print(mr)
28
(1, 28)
网站地图