1.当前时间
import datetime
#取当前时间
print(datetime.datetime.now())
结果格式:
2022, 3, 7, 19, 33, 49, 100000
import time
now = time.strftime('%Y-%m-%d %H:%M:%S')
print(now)
结果格式:
'2022-03-07 19:32:13'
2. 获取年、月、日
import datetime
#获取年份
print(datetime.datetime.now().year)
#取月
print(datetime.datetime.now().month)
#取日
print(datetime.datetime.now().day)
3. 获取时、分、秒
import datetime
#取时
print(datetime.datetime.now().hour)
#取分
print(datetime.datetime.now().minute)
#取秒
print(datetime.datetime.now().second)
4. 获取上个月最后一天的日期(本月的第一天减去1天)
last = datetime.date(datetime.date.today().year,datetime.date.today().month,1)-datetime.timedelta(1)
print (last)
结果
2022, 2, 28
5. 获取时间差(时间差单位为秒,常用于计算程序运行的时间)
import datetime
import time
starttime = datetime.datetime.now()
time.sleep(1)
endtime = datetime.datetime.now()
print ((endtime - starttime).seconds)
6. 计算当前时间向后10个小时的时间
d1 = datetime.datetime.now()
d3 = d1 + datetime.timedelta(hours=10)
d3.ctime()
其本上常用的类有:datetime和timedelta两个。它们之间可以相互加减。每个类都有一些方法和属性可以查看具体的值,如 datetime可以查看:天数(day),小时数(hour),星期几(weekday())等;timedelta可以查看:天数(days),秒数 (seconds)等。
7. python中时间日期格式化符号:
- %y 两位数的年份表示(00-99)
- %Y 四位数的年份表示(000-9999)
- %m 月份(01-12)
- %d 月内中的一天(0-31)
- %H 24小时制小时数(0-23)
- %I 12小时制小时数(01-12)
- %M 分钟数(00=59)
- %S 秒(00-59)
- %a 本地简化星期名称
- %A 本地完整星期名称
- %b 本地简化的月份名称
- %B 本地完整的月份名称
- %c 本地相应的日期表示和时间表示
- %j 年内的一天(001-366)
- %p 本地A.M.或P.M.的等价符
- %U 一年中的星期数(00-53)星期天为星期的开始
- %w 星期(0-6),星期天为星期的开始
- %W 一年中的星期数(00-53)星期一为星期的开始
- %x 本地相应的日期表示
- %X 本地相应的时间表示
- %Z 当前时区的名称
- %% %号本身
附上示例代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import datetime, calendar
def getYesterday():
today=datetime.date.today()
oneday=datetime.timedelta(days=1)
yesterday=today-oneday
return yesterday
def getToday():
return datetime.date.today()
#获取给定参数的前几天的日期,返回一个list
def getDaysByNum(num):
today=datetime.date.today()
oneday=datetime.timedelta(days=1)
li=[]
for i in range(0,num):
#今天减一天,一天一天减
today=today-oneday
#把日期转换成字符串
#result=datetostr(today)
li.append(datetostr(today))
return li
#将字符串转换成datetime类型
def strtodatetime(datestr,format):
return datetime.datetime.strptime(datestr,format)
#时间转换成字符串,格式为2008-08-02
def datetostr(date):
return str(date)[0:10]
#两个日期相隔多少天,例:2008-10-03和2008-10-01是相隔两天
def datediff(beginDate,endDate):
format=%Y-%m-%d;
bd=strtodatetime(beginDate,format)
ed=strtodatetime(endDate,format)
oneday=datetime.timedelta(days=1)
count=0
while bd!=ed:
ed=ed-oneday
count+=1
return count
#获取两个时间段的所有时间,返回list
def getDays(beginDate,endDate):
format=%Y-%m-%d;
bd=strtodatetime(beginDate,format)
ed=strtodatetime(endDate,format)
oneday=datetime.timedelta(days=1)
num=datediff(beginDate,endDate)+1
li=[]
for i in range(0,num):
li.append(datetostr(ed))
ed=ed-oneday
return li
#获取当前年份 是一个字符串
def getYear():
return str(datetime.date.today())[0:4]
#获取当前月份 是一个字符串
def getMonth():
return str(datetime.date.today())[5:7]
#获取当前天 是一个字符串
def getDay():
return str(datetime.date.today())[8:10]
def getNow():
return datetime.datetime.now()
print getToday()
print getYesterday()
print getDaysByNum(3)
print getDays('2008-10-01','2008-10-05')
print '2008-10-04 00:00:00'[0:10]
print str(getYear())+getMonth()+getDay()
print getNow()
8. 从字符串中提取时间
from datetime import datetime
import re
series = """
'01/18/2022 13:11:00',100,'1st';
'01/19/2022 13:12:00',100,'2nd';
'01/20/2022 14:11:00',100,'3rd';
"""
print(series)
dt=re.compile("'[0-9/:\s]+'")
result = dt.findall(series)
print(result)
pydt = datetime.strptime(result[0].replace("'",""),'%m/%d/%Y %H:%M:%S')
print(pydt)
pydt1=datetime.date(pydt)
print(pydt1.year)
打印结果:
'01/18/2022 13:11:00',100,'1st';
'01/19/2022 13:12:00',100,'2nd';
'01/20/2022 14:11:00',100,'3rd';
["'01/18/2022 13:11:00'", "'01/19/2022 13:12:00'", "'01/20/2022 14:11:00'"]
2022-01-18 13:11:00
2022