python现在时间 命令_Python语法速查: 16. 时间日期处理

本篇索引

(1)datetime模块

datetime模块可以处理时间和日期,其中包含以下类:date类、time对象、datetime对象、timedelt对象、tzinfo对象。

● date类

date类用于处理日期。

操作说明

创建date对象

date(year, month, day)

创建一个新的日期对象,返回的date对象是不可变的。入参year, month, day分别整数形式的年、月、日。

类属性

date.min

能够表示的最小日期:datetime.date(1,1,1)。

date.max

能够表示的最大日期:datetime.date(9999,12,31)。

date.resolutiom

不相等的日期之间最小可解析的差值:datetime.timedelta(1)

类方法

date.today()

返回当前日期的date对象。

date.fromtimestamp(timestamp)

返回对应时间戳timestamp的date对象,timestamp是time.time()函数的返回值。

date.fromordinal(ordinal)

返回从最小日期(公元1年1月1日)开始算起的ordinal天的date对象。

实例属性

d.year

实例日期对应的年。

d.month

实例日期对应的月。

d.day

实例日期对应的日。

实例方法

d.weekday()

返回实例日期对应的周几,范围:0~6(0表示周一)

d.isoweekday()

返回实例日期对应的周几,范围:1~7(1表示周一)

d.ctime()

返回一个字符串,格式与“time模块”中的time.ctime()的格式相同。

d.isoformat()

返回一个字符串(ISO 8601格式),形式为:'YYYY-MM-DD'

d.isocalendar()

返回一个元组:(iso_year, iso_week, iso_weekday),iso_weekday范围为:1~7,iso_week范围为:1~53(当年第一个星期四的周为第1周)。

d.strftime(format)

返回一个字符串,表示日期的格式与“time模块”中的time.strftime()相同,只能用于1900年以后的日期。 format格式说明

d.timetuple()

返回适合函数在time模块中使用的time_struct对象,其中小时、分、秒设为0。

d.toordinal()

将实例日期转换为一个从公元1年1月日起的天数值。

d.replace([year [,month [,day]]])

返回一个新的date对象,并使用入参值代替原有值。

● time类

time类用于处理时间。

操作说明

创建time对象

time(hour [,minute [,second [,microsecond [,tzinfo]]]])

创建一个新的时间对象,返回的time对象是不可变的。入参micorsecond是微秒,入参tzinfo是一个时区tzinfo类的实例,详见后述。

类属性

t.min

能够表示的最小时间:datetime.time(0,0)

t.max

能够表示的最大时间:datetime.time(23,59,59,999999)

t.resolution

不等的time对象之间的最小可解析的差值:datetime.time(0,0,1)

实例属性

d.hour

实例日期对应的小时。

d.minute

实例日期对应的分。

d.second

实例日期对应的秒。

d.microsecond

实例日期对应的微秒。

d.tzinfo

实例日期对应的tzinfo时区。

实例方法

t.isoformat()

返回一个字符串,形式为:"HH:MM:SS.mmmmmm",如果微秒为0,则省略微秒部分。如果提供了时区信息,会再加上一个偏移量。

t.strftime(format)

返回一个字符串,格式与“time模块”中的time.strftime()相同。 format格式说明

t.replace(hour [,minute [,second [,microsecond [,tzinfo]]]])

返回一个新的time对象,并使用入参提供的值替代原实例中的值。

t.dst()

返回t.tzinfo.dst(None)的值(夏令时),是一个timedelta对象。如果未设置时区,则返回None。

t.tzname()

返回t.tzinfo.tzname()的值,如果未设置时区,则返回None。

t.utcoffset()

返回t.tzinfo.utcoffset(None)的值,是一个timedelta对象。如果未设置时区,则返回None。

● datetime类

datetime类用于处理时间和日期。

操作说明

创建datetime对象

datetime(year, month, day [hour [,minute [,second [,microsecond [,tzinfo]]]]])

创建一个新的datetime对象,入参含义同date对象和time对象。返回的datetime对象是不可变的。

类属性

datetime.min

能够表示的最小时间:datetime.datetime(1,1,1,0,0)

datetime.max

能够表示的最大时间:datetime.datetime(9999,12,31,23,59,59,999999)

datetime.resolution

不等的datetime对象之间的最小可解析的差值:datetime.timedelta(0,0,1)

类方法

datetime.now([tz])

基于当前本地日期时间创建一个datetime对象,tz是可选时区信息。

datetime.utcnow()

基于当前的UTC日期时间创建一个datetime对象。

datetime.combine(date, time)

通过组合date对象和time对象,创建出一个datetime对象。

datetime.fromordinal()

通过指定序数天数,创建一个datetime对象,时间数值均为0。

datetime.fromtimestamp(timestamp [,tz])

基于“time模块”中的time.time()函数返回的时间戳,创建一个datetime对象,tz是可选时区信息。

datetime.utcfromtimestamp(timestamp)

基于“time模块”中的time.gmtime()函数返回的时间戳,创建一个datetime对象。

datetime.strptime(datestring, format)

根据format中的日期格式,解析datestring中的日期字符串,从而创建一个datetime对象。解析使用“time模块”中的strptime()函数。 format格式说明

实例属性

d.year

实例对应的年。

d.month

实例对应的月。

d.day

实例对应的日。

d.hour

实例对应的小时。

d.minute

实例对应的分。

d.second

实例对应的秒。

d.microsecond

实例对应的微秒。

d.tzinfo

实例对应的tzinfo时区。

实例方法

d.date()

返回一个具有相同日期的date对象。

d.time()

返回一个具有相同时间的time对象,没有时区信息。

d.utctimetuple()

返回time.struct_time对象。

d.timetz()

使用相同的时间和时区信息返回time对象。

t.strftime(format)

返回一个字符串,格式与“time模块”中的time.strftime()相同。 format格式说明

d.astimezone(tz)

返回一个位于不同时区tz中的新datetime对象,新对象的UTC标准时间同本实例的UTC标准时间。

d.replace(year, month, day [hour [,minute [,second [,microsecond [,tzinfo]]]]])

返回一个新的datetime对象,并使用入参值代替原有值。

● timedelta类与日期运算

timedelta对象表示两个日期或时间之间的差值(时间跨度)。

操作说明

创建timedelta

timedelta([days [,seconds [,microsecond [,miliseconds [,minutes [,hours [,weeks]]]]]]])

创建表示两个日期时间之差的timedelta对象,只有days, seconds, microsecond有意义,它们用于在内部表示差值。如果提供其他参数,它们将被转换为以上三值。返回的time对象是不可变的。

类属性

timedelta.min

能够表示的最大跨度的负timedelta值:datetime.timedelta(-999999999)

timedelta.max

能够表示的最大跨度的正timedelta值:datetime.timedelta(days=999999999,hours=23,minutes59,seconds=59,microseconds=999999)

timedelta.resolution

不等的timedelta对象之间的最小可解析的差值:datetime.timedelta(microseconds=1)

实例属性

td.days

实例对应的天数差。

td.seconds

实例对应的秒数差(一天之内)。

td.microseconds

实例对应的微秒差(一天之内)。

timedelta本身可进行的数学运算:

操作描述示例

+

两个时间跨度相加

td3 = td1 + td2

-

两个时间跨度相减

td3 = td1 - td2

*

时间跨度乘以整数

td2 = td1 * i; td2 = i * td1

//

时间跨度地板除以整数

td2 = td1 // i

+=

一元加法

td2 += td1

-=

一元减法

td2 -= td1

-

取负

td2 = -td1

abs()

取绝对值

td2 = abs(td1)

<

小于

td1 < td2

<=

小于等于

td1 <= td2

==

相等

td1 == td2

!=

不等

td1 != td2

>

大于

td1 > td2

>=

大于等于

td1 >= td2

date对象、datetime对象、时间跨度timedelta对象之间可以互相运算:

操作描述示例

跨度 = 日期 - 日期

返回timedelta对象

td = date1 - date2

日期 = 日期 - 跨度

返回datetime对象

date2 = date1 - td

日期 = 日期 + 跨度

返回datetime对象

date2 = date1 + td

<

日期比较:小于

date1 < date2

<=

日期比较:小于

date1 <= date2

==

日期比较:相等

date1 == date2

!=

日期比较:不等

date1 != date2

>

日期比较:大于

date1 > date2

>=

日期比较:大于等于

date1 >= date2

日期增加1天的计算:

import datetime

the_day = datetime.datetime(2019,1,1)

one_day = datetime.timedelta(days=1)

the_next_day = the_day + one_day

the_next_day.date().isoformat()

# 结果为:'2019-01-02'

● tzinfo对象。

tzinfo仅仅是一个基类,通过继承tzinfo类和实现以下方法可创建一个时区。

操作说明

tz.tzname(dt)

返回代表时区名称的字符串,如:'Asia/Shanghai',入参dt是一个datetime对象或None。

tz.utcoffset(dt)

返回timedelta对象,表示本地时间与UTC时间的偏移,单位是分钟。入参dt是一个datetime对象或None。

tz.fromutc(dt)

将入参dt(datetime对象)从UTC时间转换为本地时区,并返回一个新的datetime对象,此方法由datetime对象上的astimezne()方法调用,tzinfo已提供了默认实现,一般没有必要重新定义此方法。

tz.dst(dt)

返回一个timedelta对象,代表夏令时(Daylight Saving Time)调整。如果没有关于夏令时的信息,则返回None。入参dt是一个datetime对象或None。

示例如何定义一个新的时区:

import datetime

class MyZone(datetime.tzinfo):

TZOFFSET = 8 # 与UTC相差8小时

def utcoffset(self, dt):

return datetime.timedelta(hours=TZOFFSET)

def tzname(self, dt):

return 'Asia/Shanghai'

(2)time模块

time模块提供与时间相关的各种函数。在Python中,测量时间的方法是计算从“纪元开始”的秒数,在time=0秒的时刻称为:epoch。在类UNIX上,“纪元开始”为1970年1月1日,其他系统上由time.gmtime(0)决定。

● struct_time对象

time模块经常会用到struct_time对象,它具有以下属性:

属性值属性值

tm_year

年份4位数

tm_wday

星期几(0~6),0表示星期一

tm_mon

月(1~12)

tm_yday

一年中第几天(1~366)

tm_mday

日(1~31)

tm_isdst

夏令时(-1、0、1)

tm_hour

时(0~23)

tm_min

分(0~59)

tm_sec

秒(0~61)

time模块的常量和函数:

名称说明

模块常量

tzname

包含“本地时区”和“本地夏令时时区”的名称的元组。

timezone

本地的(非夏令时)时区。

altzone

夏令时期间使用的时区。

daylight

如果定义了夏令时时区,它将被设为一个非0值。

函数

time.time()

返回当前UTC时间,形式是从“纪元开始”的秒数(浮点数)。

time.mktime(tuple)

入参为一个struct_time对象(或类似的元组),将其转换为从“纪元开始”的秒数(浮点数)。如果输入的不是有效时间,将引发OverflowError异常。

time.ctime([secs])

将从“纪元开始”计算的秒数形式的时间,转换为代表本地时间的字符串。与asctime(localtime(secs))相同。如果省略入参secs,就会使用当前时间。

time.asctime([tuple])

将gmtime()或localtime()函数返回的时间元组,转换为'Mon Jan 1 12:00:00 2019'格式的字符串。如果省略入参secs,就会使用当前时间。

time.gmtime([secs])

将从“纪元开始”计算的秒数形式的时间,转换为UTC时间,返回为struct_time对象。如果省略入参secs,就会使用当前时间。

time.localtime([secs])

将从“纪元开始”计算的秒数形式的时间,转换为本地时区时间,返回为struct_time对象。如果省略入参secs,就会使用当前时间。

time.strftime(format [,tm])

将一个struct_time格式的时间,转换为format定义的字符串形式。 format格式说明

time.strptime(string [,format])

解析一个代表时间的字符串,然后返回一个struct_time对象。format格式默认为'%a %b %d %H:%M:%S %Y'。如果不能解析字符串,就会引发ValueError异常。 format格式说明

time.sleep(secs)

让当前进程进入睡眠状态并持续secs秒钟,secs是一个浮点数。

time.tzset()

基于UNIX上TZ环境变量的值重置时区设置。

● format 格式说明

指令含义指令含义

%Y

年(四位数)

%c

地区的日期时间完整表示,如:'Sat Jan 1 00:00:00 2000 '

%y

年(2位数)

%x

本地区的日期表示,如:'12/31/99'

%m

月(01~12)

%X

本地区的时间表示,如:'01:02:03'

%d

日(01~31)

%a

地区缩写形式的星期几字符串

%H

时(00~23)

%A

地区完整的星期几字符串

%I

时(01~12)

%b

地区缩写形式的月份字符串

%M

分(00~59)

%B

地区完整形式的月份字符串

%S

秒(00~59)

%Z

时区名称(如不存在则为空字符串)

%p

上午或下午(AM / PM)

%%

百分号字符

%w

星期几(0~6),0表示星期天

%j

一年中第几天(001~366)

%U

一年中第几周(00~53),星期天为首日

%W

一年中第几周(00~53),星期一为首日

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值