Python 时间_Datetime_Module

发布时间 2023-10-09 16:40:26作者: SouthDream

Datetime_Module

作用:处理日期和时间

一、Datetime模块中的类

  • datetime:表示日期和时间,可以处理年、月、日、时、分、秒。
  • date:表示日期,主要用于处理年、月、日。
  • time:表示时间,主要用于处理时、分、秒。
  • timedelta:表示时间间隔,即两个时间点的间隔,主要用于做时间加减。
  • tzinfo:时区的相关信息。

二、Date类 <==> 日期

1.创建Date类对象

使用 Datetime.date() 函数创建日期对象,其中需要传递一个表示日期的元组,其中包含年、月、日。

import datetime  
  
date1 = datetime.date(2023, 7, 4)  
print(date1)  # 输出:2023-07-04

value = (2023 , 10 , 8)     #元组
date2 = datetime.date(value[0] , value[1] , value[2])
print(date2)    # 输出:2023-10-08

2.Date对象的属性

    • year:年份
    • month:月份
    • day:日期
    • weekday():星期几(其中0表示星期一,6表示星期日)
    • isocalendar():返回一个包含 年份、星期数 和 该年的第几天 的元组
import datetime  
  
date = datetime.date(2023, 7, 4)  
print(date.year)  # 输出:2023  
print(date.month)  # 输出:7  
print(date.day)  # 输出:4  
print(date.weekday())  # 输出:6,表示星期日  
print(date.isocalendar())  # 输出:(2023, 30, 3),表示2023年第30个星期,该年的第3天

3.日期的比较

使用关系运算符(<、>、= 等)比较两个日期的大小关系。比较的是日期本身,而不是时间。

import datetime  
  
date1 = datetime.date(2023, 7, 4)  
date2 = datetime.date(2023, 7, 5)  
  
if date1 < date2:  
    print("date1小于date2")  
else:  
    print("date1不小于date2")

>>>date1小于date2

4.日期的运算

#(1)加法:在现有日期的基础上增加一定的时间长度
from datetime import date, timedelta  
  
d = date(2023, 7, 4)  
d_future = d + timedelta(days=5)  # 在d的基础上向后推5天  
print(d_future)  # 输出:2023-07-09


#(2)减法:在现有日期的基础上减去一定的时间长度
from datetime import date, timedelta  
  
d = date(2023, 7, 4)  
d_past = d - timedelta(days=5)  # 在d的基础上向前推5天  
print(d_past)  # 输出:2023-06-28

#(3)相减:两个日期相减可以得到一个timedelta对象,表示两个日期之间的时间差
from datetime import date, timedelta  
  
d1 = date(2023, 7, 4)  
d2 = date(2023, 7, 9)  
  
delta = d2 - d1  # 得到两个日期之间的时间差  
print(delta)  # 输出:5 days, 0:00:00

5.日期与字符串

(1)使用strftime()方法将日期格式化为指定的字符串格式。这个方法接受一个格式字符串作为参数。即strftime()的返回值为字符串。

(2)使用strptime()方法将字符串解析为日期。这个方法接受两个参数:日期字符串和日期格式字符串。

#(1)strftime
print(d.strftime('%Y-%m-%d'))  # 输出: '2023-07-04'

#(2)strptime
from datetime import date  
# 从字符串解析日期  
d = date.strptime('2023-07-04', '%Y-%m-%d')  
print(d)  # 输出: date(2023, 7, 4)

三、Datetime类  <==>  日期时间

1.创建Datetime对象

  (1)使用基本构造方法 datetime() 方法构造;

  (2)使用 now() 获取当前日期和时间对象;

(3)使用 fromtimestamp() 给定一个时间戳;下方案例中的 timestamp 是自1970年1月1日00:00:00(UTC)以来的秒数,小数点后边的部分代表微秒。fromtimestamp()函数会返回一个datetime类型的对象,代表指定的日期和时间。

#(1)datetime.datetime()
from datetime import datetime as dt  
specific_datetime = dt(2023, 7, 4, 12, 30, 45)  
print(specific_datetime)


#(2)now()
from datetime import datetime as dt  
current_datetime = dt.now()  
print(current_datetime)

#(3)fromtimestamp() from datetime import datetime as dt, timezone timestamp = 1633649780.1234567 dt_object = dt.fromtimestamp(timestamp, timezone.utc) print(dt_object)

  2.datetime对象的属性

    • year:表示年份。
    • month:表示月份。
    • day:表示日期。
    • hour:表示小时数。
    • minute:表示分钟数。
    • second:表示秒数。
    • microsecond:表示微秒数。 

3.常见的方法

    • datetime.datetime():通过位置参数传参创建datetime对象,也可以通过关键字传参方式创建。
    • datetime.datetime.now():不需要参数,直接返回当前的日期和时间。
    • datetime.datetime.today():不需要参数,直接返回当前的日期。
    • datetime.datetime.utcnow():不需要参数,直接返回当前的世界标准时间日期和时间。

  4.datetime对象之间的运算

    (1)在两个datetime对象之间进行减法运算,得到一个timedelta对象,表示两个日期或时间之间的间隔。

from datetime import datetime as dt  
d1 = dt(2023, 7, 4, 12, 30)  
d2 = dt(2023, 7, 5, 12, 30)  
delta = d2 - d1  
print(delta)  # 输出:1 day, 0:00:00

    (2)datetime对象可以与timedelta对象相加或相减,得到一个新的datetime对象。

from datetime import datetime as dt  
d1 = dt(2023, 7, 4, 12, 30)  
d2 = dt(2023, 7, 5, 12, 30)  
delta = d2 - d1  
print(delta)  # 输出:1 day, 0:00:00

  5.datetime与字符串

    同date

四、Time类  <==>  时间

  1.创建Time对象

    datetime.time是Python的datetime模块中的一个类,它用于表示一天中的时间,包括小时、分钟、秒和微秒。

    创建datetime.time对象可以通过以下三种方式:

    (1)使用time()函数。

from datetime import time  
t = time()    #创建一个表示当前时间的time对象

    (2)使用datetime模块中的datetime类,只指定小时、分钟、秒和微秒参数来创建一个time对象。

from datetime import datetime  
t = datetime(2023, 7, 4, 15, 30, 45, 987654)
#创建一个表示2023年7月4日15:30:45.987654的datetime对象,然后可以调用它的time()方法来获取它的时间部分,即一个time对象。

    (3)使用datetime模块中的fromordinal()函数和toordinal()方法,给出一个时间点的ordinal值(自1970年1月1日以来的秒数)。

from datetime import time  
t = time.fromordinal(366300000)
#创建一个表示UTC时间2023年7月4日12:00:00的time对象。注意这种方法的参数是一个整数。

  2.datetime.time的属性

    • hour:表示小时数,范围为0-23。
    • minute:表示分钟数,范围为0-59。
    • second:表示秒数,范围为0-61(注:60和61用于闰秒)。
    • microsecond:表示微秒数。
    • hour、minute、second和microsecond都是只读的属性,不能被修改。

  3.datetime.time的常见方法

    • time.replace(hour=h, minute=m, second=s, microsecond=us) :返回一个新的 time 对象,它的 hour、minute、second 和 microsecond 与 self 相同,但 hour、minute、second 和 microsecond 参数可以指定。
    • time.timetuple() :返回一个包含时间信息的元组,元组中的元素是 hour、minute、second 和 microsecond。
    • time.timestamp() :返回一个表示该时间的浮点数,以 UTC 为准。在 Python 3.3 及以后的版本中可用。该浮点数是自1970年1月1日0时0分0秒(UTC)以来的秒数。
    • time.utctimetuple() :与 timetuple() 类似,但不考虑本地时区。始终返回 UTC 时间。
    • time.toordinal() :返回一个表示该时间的 ordinal 值,与 timestamp() 类似,但是以整数形式表示。在 Python 3.3及以后的版本中可用。注意这种方法的参数是一个整数。
    • time.strftime(format) :返回一个字符串,格式按照 format 参数规定的方式被修改过。例如:“%H:%M:%S”。
    • time.strptime(string, format) :将按照 format 参数指定的方式解析 string 参数并返回一个 time 对象。例如:time.strptime('15:30:45', '%H:%M:%S')。

  4.datetime.time的运算

    datetime.time对象可以和datetime模块中的其他类型进行运算,例如:

    datetime.timedelta:可以使用加法和减法运算将datetime.time对象与datetime.timedelta对象相加或相减,结果是一个新的datetime.datetime对象。

from datetime import timedelta, datetime  
t = datetime(2023, 7, 4, 15, 30, 45)  # datetime对象  
td = timedelta(hours=2)  # timedelta对象  
t_new = t + td  # datetime对象与timedelta对象的加法运算  
print(t_new)  # 输出:2023-07-04 17:30:45.000000

 五、Timedelta类  <==>  时间间隔

1.创建timedelta对象

(1)使用timedelta()函数。

#创建一个表示1天的timedelta对象。
from datetime import timedelta as td  
delta = td(days=1)

(2)使用timedelta对象的属性。

#创建一个表示1天的timedelta对象。
from datetime import timedelta as td  
delta = td()  
delta.days = 1

(3)使用timedelta()函数的参数。

#创建一个表示1天3小时的timedelta对象。
from datetime import timedelta as td  
delta = td(days=1, hours=3)

2.timedelta的属性

    • days: 整数部分的天数。例如,delta.days可以获取或设置一个整数表示的天数。
    • seconds: 整数部分的秒数(不包括天数部分)。例如,delta.seconds可以获取或设置一个整数表示的秒数。注意这个不包括天数部分的小时、分钟和秒数。
    • microseconds: 微秒数(不包括天数和秒数部分)。例如,delta.microseconds可以获取或设置一个整数表示的微秒数。注意这个不包括天数、秒数部分的小时、分钟和秒数。
    • total_seconds() 方法: 返回该时间差的总秒数。例如,delta.total_seconds()会返回86401秒(假设 delta 为一天)。
    • total_days() 方法: 返回该时间差的总天数(可能有小数)。例如,delta.total_days()会返回1.0(假设 delta 为一天)。

3.timedelta的方法

    • timedelta.total_seconds(): 返回该时间差的总秒数。这个方法和total_seconds属性是相同的。
    • timedelta.total_days(): 返回该时间差的总天数(可能有小数)。这个方法和total_days属性是相同的。
    • timedelta.__str__(): 返回描述该时间差的字符串。例如,str(delta)可能返回'1 day, 0:00:00'。
    • timedelta.__repr__(): 返回表示该时间差的字符串。例如,repr(delta)可能返回"datetime.timedelta(1)"。