为了在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天,依此类推。
一些与日期相关的方法是-
这是创建日期类型对象的构造函数。要创建日期,所有参数都必须作为整数类型数据。年份必须在MINYEAR和MAXYEAR范围内。如果给定的日期无效,则会引发ValueError。
此方法用于返回当前的本地日期。
此方法用于从POSIX时间戳获取日期。如果时间戳值超出范围,则将引发OverflowError。
此方法用于从多久的公历日历中获取日期。它用于从第一年的1月1日起的日期计数中获取日期。
此方法用于将日期返回到公历日历序号。
此方法用于返回一周中的日期,作为该日期的整数。星期一为0,星期二为1,依此类推。
此方法用于以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。
一些与时间有关的方法是
此方法用于从ISO 8601字符串获取时间。它可以采用time.isoformat()方法的任何输出。
此方法用于通过从参数获取值来返回时间。如果未传递任何参数,它将返回相同时间的对象值。
此方法用于返回时区的名称。如果tzinfo为None,它将返回None。
datetime对象同时包含日期和时间。作为日期对象,它支持公历日历;作为时间对象,它每天精确地保留3600 * 24秒。
它支持所有与日期和时间相关的方法,某些方法也适用于datetime。这些就像-
此方法用于获取当前日期和时间。如果不存在tz或None,则它将像today()
方法一样返回日期。
此方法用于获取与当前UTC日期和时间有关的信息。
还有另外两种称为strftime()
和的方法strptime()
。这些方法适用于日期和时间对象以及日期时间对象。
该方法strftime()
将表示时间的元组或struct_time转换为format参数指定的字符串,gmtime()
或者localtime()
将其转换为由format参数指定的字符串。如果未提供t,localtime()
则使用由返回的当前时间。格式必须是字符串。如果t中的任何字段超出允许范围,则会引发ValueError异常。
该方法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