Python基本日期和时间类型
为了在python中操纵日期和时间,有一个名为datetime的模块。有两种类型的日期和时间对象。这些类型是幼稚的和有意识的。
在朴素的对象中,没有足够的信息来明确地从其他日期时间对象中定位该对象。在这种方法中,它使用协调世界时(UTC)。
在有意识的类型对象中,存在有关算法和政治时间调整的不同信息。此类对象用于表示某些特定时刻。
要使用此模块,我们应该使用-导入它
import datetime
此模块中有不同的类,常量和方法。
常数是-
datetime.MINYEAR
它是最小的Year数字,可以用作日期或日期时间对象。值是0
datetime.MAXYEAR
它是最大的Year数字,可以用作日期或日期时间对象。值是9999
可用的数据类型是-
日期
是日期类型的对象。它使用公历。它具有年,月,日属性。
时间
这是一个时间对象类。它与任何特定的日子无关。它具有小时,分钟,秒,微秒和tzinfo属性。
约会时间
它是一组日期和时间。
时间三角洲
它用于表示两个日期,时间或日期时间值之间的差(以毫秒为单位)。
tzinfo
它是一个抽象基类。它保存时区信息。它由datetime和time类使用。
时区
在此类中,它实现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()
此方法用于以ISO8601格式字符串返回日期。格式为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)
此方法用于从ISO8601字符串获取时间。它可以采用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_timelocaltime()
。format参数使用与;相同的指令strftime()
。它默认为“%a%b%d%H:%M:%S%Y”,它与返回的格式匹配ctime()
。
这两种方法使用一些指令。其中一些在下面列出-
%一种
工作日全名
%B
全月名称
%d
每月的某天(0到31)
%S
第二
%G
4位数字的年份,对应于ISO周号
%m
月(1到12)
%M
分钟
%T
当前时间,等于%H:%M:%S
%W
当年的星期数,从第一个星期一的第一个星期一开始
%w
以小数点表示的星期几,星期日=0
%Y
包括世纪在内的年份
%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