python time库 datetime库

目录

 

Python 日期和时间 | 菜鸟教程

Time

获取时间:

格式化时间:strftime(tpl,ts)

将格式化字符串转换为时间戳strptime(str,tpl)

计时器功能

 datetime

date类

time类

datetime类

timedelta类


Python 日期和时间 | 菜鸟教程

Python 处理日期与时间的全面总结(7000字)

80 个例子,彻底掌握Python日期时间处理!

Time

获取时间:

1.11.获取当前时间戳

时间戳:当前系统中表示时间的一个浮点数

import time
time.time() #获取当前时间戳(计算机内部时间)
# 1643336568.9237003

日期范围:1970-2038,超过此范围应该使用datetime模块

表示从1970.1.1. 0:0开始到当前时刻的秒数

1970年之前的日期无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年。

1.2 获取当前时间,返回字符串

可基于时间戳进行转换

time.ctime()
#'Fri Jan 28 10:27:03 2022'


#可以传入时间戳格式时间,用来做转化
import time
timestamp = time.time()
timestr = time.ctime(timestamp)
timestr
#'Sat Jan 29 15:21:48 2022'

2.1.获取当前时间,返回计算机程序可以处理的时间格式:struct_time形式

  • localtime() 返回当前时间的struct_time形式,可传入时间戳格式时间,用来做转化

  • gmtime() 返回当前时间的struct_time形式,UTC时区(0时区) ,可传入时间戳格式时间,用来做转化

time.gmtime()
#time.struct_time(tm_year=2022, tm_mon=1, tm_mday=29, tm_hour=7, tm_min=34, tm_sec=50, tm_wday=5, tm_yday=29, tm_isdst=0)

time.localtime()
#time.struct_time(tm_year=2022, tm_mon=1, tm_mday=29, tm_hour=15, tm_min=34, tm_sec=21, tm_wday=5, tm_yday=29, tm_isdst=0)

struct_time元组——时间元组

python time库 datetime库_第1张图片

2.3 时间戳→时间元组

时间戳→时间元组:将时间戳浮点数传递给gmtime函数

#  可传入时间戳格式时间,用来做转化
time.gmtime(time.time())
#time.struct_time(tm_year=2022, tm_mon=1, tm_mday=29, tm_hour=7, tm_min=29, tm_sec=34, tm_wday=5, tm_yday=29, tm_isdst=0)

时间戳→时间元组:将时间戳浮点数传递给localtime函数

localtime = time.localtime(time.time())
localtime
#time.struct_time(tm_year=2022, tm_mon=1, tm_mday=28, tm_hour=10, tm_min=48, tm_sec=35, #tm_wday=4, tm_yday=28, tm_isdst=0)

2.4 时间元组→时间戳

time.mktime(time.localtime())
#1643441791.0
time.mktime(time.gmtime())
#1643413005.0

 2.2  asctime() 返回字符串形式的时间

可基于时间元组获取易读的格式化当前时间

time.asctime()
#'Sat Jan 29 15:27:43 2022'

#asctime() 返回字符串形式的时间,可以传入struct_time形式时间,用来做转化
time.asctime(localtime)
#'Fri Jan 28 10:48:35 2022'

time.asctime(time.gmtime())
'Sat Jan 29 07:24:00 2022'

格式化时间:strftime(tpl,ts)

tpl:定义输出效果

ts:struct_time元组

# 格式化成2022-01-28 03:04:00形式
time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime())
#'2022-01-28 03:04:00'

# 格式化成Fri Jan 28 03:07:14形式
time.strftime("%a %b %d %H:%M:%S",time.gmtime())
#'Fri Jan 28 03:07:14'

将格式化字符串转换为时间戳strptime(str,tpl)

str:字符串形式的时间值

tpl:定义输入效果

timestr = '2022-01-28 03:04:00'
                     
time.strptime(timestr,"%Y-%m-%d %H:%M:%S")
                     
#time.struct_time(tm_year=2022, tm_mon=1, tm_mday=28, tm_hour=3, tm_min=4, tm_sec=0, #tm_wday=4, tm_yday=28, tm_isdst=-1)

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 当前时区的名称
  • %% %号本身

计时器功能

 datetime

包括的类:

  • date:表示日期的类。常用的属性有year, month, day

  • time:表示时间的类。常用的属性有hour, minute, second, microsecond

  • datetime:表示日期时间

  • timedelta:表示时间间隔,即两个时间点之间的长度

  • tzinfo:与时区有关的相关信息

均为不可变对象

date类

表示日期的类

常用类方法类属性

  • max、min:date对象所能表示的最大、最小日期

  • resolution:date对象表示日期的最小单位。这里是天

  • today():返回一个表示当前本地日期的date对象

  • fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象

  • fromordinal(ordinal):将Gregorian日历时间转换为date对象(特殊历法用不上)

    import time
    from datetime import date
    date.max
    #datetime.date(9999, 12, 31)
    date.min
    #datetime.date(1, 1, 1)
    date.resolution
    #datetime.timedelta(days=1)
    date.today()
    #datetime.date(2022, 1, 29)
    date.fromtimestamp(time.time())
    #datetime.date(2022, 1, 29)

    实例方法和属性:

  • .year:返回年

  • .month:返回月

  • .day:返回日

  • .replace(year, month, day):生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)

  • .weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推

  • .isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推

  • .isocalendar():返回格式如(year, wk num, wk day)

  • .isoformat():返回格式如’YYYY-MM-DD’的字符串

  • .strftime(fmt):自定义格式化字符串。与time模块中的strftime类似。

  • .toordinal():返回日期对应的Gregorian Calendar日期

today = date.fromtimestamp(time.time())#today存储了一个类对象
today.year
#2022
today.month
#1
today.day
#29
lastyear_today = today.replace(2020,1,29)
#lastyear_today
#datetime.date(2020, 1, 29)

lastyear_today.weekday()
#2
lastyear_today.isoweekday()
#3
lastyear_today.isocalendar()
#datetime.IsoCalendarDate(year=2020, week=5, weekday=3)
lastyear_today.isoformat()
#'2020-01-29'
lastyear_today.strftime("%Y-%m-%d %H:%M:%S")
#'2020-01-29 00:00:00'
lastyear_today.toordinal()
#737453

time类

类属性和方法:

  • min、max:time类所能表示的最小、最大时间。其中,time.min = time(0, 0, 0, 0), time.max = time(23, 59, 59, 999999)

  • resolution:时间的最小单位,这里是1微秒

from datetime import time
time.min
datetime.time(0, 0)
time.max
datetime.time(23, 59, 59, 999999)
time.resolution
datetime.timedelta(microseconds=1)

实例方法和属性:

  • .hour、.minute、.second、.microsecond:时、分、秒、微秒

  • .tzinfo:时区信息

  • .replace([hour[, minute[, second[, microsecond[, tzinfo]]]]]):创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性(原有对象仍保持不变);

  • .isoformat():返回型如”HH:MM:SS”格式的字符串表示;

  • .strftime(fmt):返回自定义格式化字符串。

time()#time类的构造函数
datetime.time(0, 0)

myTime = time(22)
myTime.hour
#22
myTime.minute
#0
myTime.second
#0
myTime.microsecond
#0

nextime = myTime.replace(22,30)
#nextime.isoformat()
'22:30:00'
#nextime.strftime("%Y-%m-%d %H:%M:%S")
'1900-01-01 22:30:00'

datetime类

date与time的结合体,包括date与time的所有信息

类属性与方法:

  • min、max:datetime所能表示的最小值与最大值;

  • resolution:datetime最小单位;

  • today():返回一个表示当前本地时间的datetime对象;

  • now([tz]):返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;

  • utcnow():返回一个当前utc时间的datetime对象;

  • fromtimestamp(timestamp[, tz]):根据时间戮创建一个datetime对象,参数tz指定时区信息;

  • utcfromtimestamp(timestamp):根据时间戮创建一个datetime对象;

  • combine(date, time):根据date和time,创建一个datetime对象;

  • strptime(date_string, format):将格式字符串转换为datetime对象;

import  datetime
datetime.datetime(1970,1,29,1,1,1,1)#构造函数

datetime.datetime.max
#datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)
datetime.datetime.min
#datetime.datetime(1, 1, 1, 0, 0)
datetime.datetime.resolution
#datetime.timedelta(microseconds=1)
datetime.datetime.today()#返回一个表示当前本地时间的datetime对象
#datetime.datetime(2022, 1, 29, 17, 50, 13, 688511)
datetime.datetime.now()
#datetime.datetime(2022, 1, 29, 17, 50, 30, 577492)
datetime.datetime.utcnow()
#datetime.datetime(2022, 1, 29, 9, 50, 43, 658491)
import time
datetime.datetime.fromtimestamp(time.time())
#datetime.datetime(2022, 1, 29, 17, 51, 20, 359494)
datetime.datetime.utcfromtimestamp(time.time())
#datetime.datetime(2022, 1, 29, 9, 51, 35, 160494)


mydate = datetime.date.today()
mytime = datetime.time(22,30,30)
mydatetime = datetime.datetime.combine(mydate,mytime)
timestr = '2022-01-28 03:04:00'

lastdate = datetime.datetime.strptime(timestr,"%Y-%m-%d %H:%M:%S")

实例方法与属性:

today = datetime.datetime.today()#返回一个表示当前本地时间的datetime对象
today.year
#2022
today.month
#1
today.day
#29
today.hour
#18
today.minute
#2
today.second
#50
today.microsecond
#431511

mydate = today.date()#获取date对象
mytime = today.time()#获取time对象

today.replace(2020,1,29,18,5)
#datetime.datetime(2020, 1, 29, 18, 5, 50, 431511)
today.timetuple()
#time.struct_time(tm_year=2022, tm_mon=1, tm_mday=29, #tm_hour=18, tm_min=2, tm_sec=50, tm_wday=5, tm_yday=29, tm_isdst=-1)
today.utctimetuple()
#time.struct_time(tm_year=2022, tm_mon=1, tm_mday=29, #tm_hour=18, tm_min=2, tm_sec=50, tm_wday=5, tm_yday=29, tm_isdst=0)
today.toordinal()
#738184
today.weekday()
#5
today.isocalendar()
datetime.IsoCalendarDate(year=2022, week=4, weekday=6)
today.isoformat()
#'2022-01-29T18:02:50.431511'
today.ctime()
#'Sat Jan 29 18:02:50 2022'
today.strftime("%Y-%m-%d %H:%M:%S")
#'2022-01-29 18:02:50'

timedelta类

时间间隔对象

构造函数:

class datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])

1.没有必填参数

2.两个时间间隔对象可以彼此之间相加或相减

3.一个datetime对象减去一个时间间隔对象,返回对应减去之后的datetime对象

4.两个datetime对象相减返回的是一个时间间隔对象

5.对date,time同样适用

delta1 = datetime.timedelta(days=1)
today = datetime.datetime.today()
yesterday = today - delta1
#yesterday
datetime.datetime(2022, 1, 28, 20, 24, 7, 609998)
delta2 = datetime.timedelta(days=2)
delta3 = delta1 + delta2
#threeDaysago = today - delta3
threeDaysago
datetime.datetime(2022, 1, 26, 20, 24, 7, 609998)

yearsago = datetime.datetime(1970,1,29)
today = datetime.datetime.today()
dalte1 = today - yearsago
dalte1
#datetime.timedelta(days=18993, seconds=73770, microseconds=59842)

你可能感兴趣的:(python,python,开发语言,后端)