Python基本日期和时间类型

为了在python中操纵日期和时间,有一个名为datetime的模块。有两种类型的日期和时间对象。这些类型是幼稚的和有意识的。

在朴素的对象中,没有足够的信息来明确地从其他日期时间对象中定位该对象。在这种方法中,它使用协调世界时(UTC)。

在有意识的类型对象中,存在有关算法和政治时间调整的不同信息。此类对象用于表示某些特定时刻。

要使用此模块,我们应该使用-导入它

import datetime

此模块中有不同的类,常量和方法。

常数是-

序号常数和说明
1

datetime.MINYEAR

它是最小的Year数字,可以用作日期或日期时间对象。值是0

2

datetime.MAXYEAR

它是最大的Year数字,可以用作日期或日期时间对象。值是9999

可用的数据类型是-

序号数据类型和描述
1

日期

是日期类型的对象。它使用公历。它具有年,月,日属性。

2

时间

这是一个时间对象类。它与任何特定的日子无关。它具有小时,分钟,秒,微秒和tzinfo属性。

3

约会时间

它是一组日期和时间。

4

时间三角洲

它用于表示两个日期,时间或日期时间值之间的差(以毫秒为单位)。

5

tzinfo

它是一个抽象基类。它保存时区信息。它由datetime和time类使用。

6

时区

在此类中,它实现tzinfo。与UTC有固定的偏移量

日期类型对象

日期对象代表一个日期。在日期中有日,月和年部分。它使用公历。根据此日历,第1年的1月1日称为第1天,依此类推。

一些与日期相关的方法是-

方法date.date(年,月,日)

这是创建日期类型对象的构造函数。要创建日期,所有参数都必须作为整数类型数据。年份必须在MINYEAR和MAXYEAR范围内。如果给定的日期无效,则会引发ValueError。

方法date.today()

此方法用于返回当前的本地日期。

方法date.fromtimestamp(timestamp)

此方法用于从POSIX时间戳获取日期。如果时间戳值超出范围,则将引发OverflowError。

方法date.fromordinal(ordinal)

此方法用于从多久的公历日历中获取日期。它用于从第一年的1月1日起的日期计数中获取日期。

方法date.toordinal()

此方法用于将日期返回到公历日历序号。

方法date.weekday()

此方法用于返回一周中的日期,作为该日期的整数。星期一为0,星期二为1,依此类推。

方法date.isoformat()

此方法用于以ISO 8601格式字符串返回日期。格式为YYYY-MM-DD。

范例程式码

import datetime as dt
new_date = dt.date(1998, 9, 5) #Store date 5th septemberm, 1998
print("The Date is: " + str(new_date))
print("Ordinal value of given date: " + str(new_date.toordinal()))
print("The weekday of the given date: " + str(new_date.weekday())) #Monday is 0
my_date = dt.date.fromordinal(732698) #Create a date from the Ordinal value.
print("The Date from ordinal is: " + str(my_date))
td = my_date - new_date #Create a timedelta object
print('td Type: ' + str(type(td)) + '\nDifference: ' + str(td))

输出结果

The Date is: 1998-09-05
Ordinal value of given date: 729637
The weekday of the given date: 5
The Date from ordinal is: 2007-01-22
td Type: <class 'datetime.timedelta'>
Difference: 3061 days, 0:00:00

时间对象

时间对象代表本地时间。在时间中,有时,分秒,微秒,tzinfo部分。小时的范围是0到24,分钟和秒的范围是0到60,微秒的范围是0到1000000。

一些与时间有关的方法是

方法time.fromisoformat(time_string)

此方法用于从ISO 8601字符串获取时间。它可以采用time.isoformat()方法的任何输出。

方法time.replace(hour = self.hour,minute = self.minute,second = self.second,microsecond = self.microseconds,tzinfo = self.tzinfo,* fold = 0)

此方法用于通过从参数获取值来返回时间。如果未传递任何参数,它将返回相同时间的对象值。

方法time.tzname()

此方法用于返回时区的名称。如果tzinfo为None,它将返回None。

日期时间对象

datetime对象同时包含日期和时间。作为日期对象,它支持公历日历;作为时间对象,它每天精确地保留3600 * 24秒。

它支持所有与日期和时间相关的方法,某些方法也适用于datetime。这些就像-

方法datetime.now(tz = None)

此方法用于获取当前日期和时间。如果不存在tz或None,则它将像today()方法一样返回日期。

方法datetime.utcnow()

此方法用于获取与当前UTC日期和时间有关的信息。

还有另外两种称为strftime()和的方法strptime()。这些方法适用于日期和时间对象以及日期时间对象。

方法datetime.strftime(format [,t])

该方法strftime()将表示时间的元组或struct_time转换为format参数指定的字符串,gmtime()或者localtime()将其转换为由format参数指定的字符串。如果未提供t,localtime()则使用由返回的当前时间。格式必须是字符串。如果t中的任何字段超出允许范围,则会引发ValueError异常。

方法datetime.strftime(format [,t])

该方法strptime()根据格式解析表示时间的字符串。返回值为gmtime()或返回的struct_time localtime()。format参数使用与;相同的指令strftime()。它默认为“%a%b%d%H:%M:%S%Y”,它与返回的格式匹配ctime()

这两种方法使用一些指令。其中一些在下面列出-

序号指令与说明
1

%一种

工作日全名

2

%B

全月名称

3

%d

每月的某天(0到31)

4

%S

第二

5

%G

4位数字的年份,对应于ISO周号

6

%m

月(1到12)

7

%M

分钟

8

%T

当前时间,等于%H:%M:%S

9

%W

当年的星期数,从第一个星期一的第一个星期一开始

10

%w

以小数点表示的星期几,星期日= 0

11

%Y

包括世纪在内的年份

12

%Z或%z

时区或名称或缩写

范例程式码

import datetime as dt
my_date1 = dt.datetime(2015, 1, 4) #Storing the date 4th Jan, 2015
print(my_date1)
print('The Weekday of that day was: ' + my_date1.strftime('%A'))
my_date2 = dt.datetime.strptime('August-15-2017', '%B-%d-%Y') #Storing the date 15th Aug, 2017
print(my_date2)
print('The Weekday of that day was: ' + my_date2.strftime('%A'))
print('The difference between two days: ' + str(abs(my_date1 - my_date2)))

输出结果

2015-01-04 00:00:00
The Weekday of that day was: Sunday
2017-08-15 00:00:00
The Weekday of that day was: Tuesday
The difference between two days: 954 days, 0:00:00