pythontime时间模块_Python时间模块函数,PythonTime

Python中与时间和日期相关的常见模块主要有calendar,time和datetime,后两个主要用于时间的计算和处理等,而calendar一般则用于日历获取、显示等方面。

import time

import datetime

一、time模块

获取当地时间(localtime(),ctime(),time())

import time

import datetime

a= time.localtime()

b=time.asctime()#time.asctime([tuple])将时间元组转换为字符串,如果时间元组不存在,则使用localtime()返回的当前时间。

c=time.ctime()#将纪元以来的时间(以秒为单位)转换为本地时间中的字符串\

d=time.time()#返回时间戳

print('a:',a)

print('b:',b)

print('c:',c)

print('d:',d)

a: time.struct_time(tm_year=2020, tm_mon=8, tm_mday=19, tm_hour=22, tm_min=31, tm_sec=8, tm_wday=2, tm_yday=232, tm_isdst=0)

b: Wed Aug 19 22:31:08 2020

c: Wed Aug 19 22:31:08 2020

d: 1597847468.5111706

字符串形式变成时间形式**(strptime(),(strftime())**

#strptime()函数

strptime(string, format) -> struct_time

#strftime()函数

strftime(format[, tuple]) -> string

Commonly used format codes:

%Y Year with century as a decimal number.

%m Month as a decimal number [01,12].

%d Day of the month as a decimal number [01,31].

%H Hour (24-hour clock) as a decimal number [00,23].

%M Minute as a decimal number [00,59].

%S Second as a decimal number [00,61].

%z Time zone offset from UTC.

%I Hour (12-hour clock) as a decimal number [01,12].

%p Locale’s equivalent of either AM or PM.

这里有两个函数使用的简单范例

from time import *

time_tuple= localtime()#返回现在时间的时间元组

str1=strftime('%Y/%m/%d',time_tuple)

print(str1)

tuple2=strptime("2020/08/19","%Y/%m/%d")

print(tuple2)

2020/08/19

time.struct_time(tm_year=2020, tm_mon=8, tm_mday=19, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=232, tm_isdst=-1)

也可以两个函数的结果互相充当另一个函数的参数:

from time import *

time_tuple= localtime()

str1=strftime('%Y/%m/%d',time_tuple)

print(str1)

#此处将string直接改成我们的str1字符串

str2=strptime(str1,"%Y/%m/%d \n")

print(str2)

2020/08/19

time.struct_time(tm_year=2020, tm_mon=8, tm_mday=19, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=232, tm_isdst=-1)

延申和错误解决

(1)[strptime,strftime 结果转换 报错 ValueError: unconverted data remains: 】

需要注意的是,str1除了包含我们的时间数据外还包含一个空格与换行符(实际上是我打错的),所以在strptime参数中需要额外指明格式(多+一个空格和换行符),否则将会报错unconverted data remains:

ValueError: unconverted data remains:

(2)strftime()函数不能直接在括号内用中文转化成一定的格式

from time import *

time_tuple= localtime()#返回现在时间的时间元组

str1=strftime('%Y年%m月%d日',time_tuple)

print(str1)

报错:UnicodeEncodeError: ‘locale’ codec can’t encode character ‘\u5e74’ in position 2: encoding error

原因是括号中的中文没有转化为unicode编码失败的

from time import *

time_tuple= localtime()#返回现在时间的时间元组

#方法一:改变编码

string=strftime('%Y年%m月%d日'.encode('unicode_escape').decode('utf8'),time_tuple).encode('utf-8').decode('unicode_escape')

print('方法一:',string)

#方法二:格式化输出

str1=strftime("%Y{}%m{}%d{} %H{}%M{}%S{}",localtime())#因为str1保存的是字符串,{}再用format自然就可以格式化输出了

print('方法二:',str1.format('年','月','日','时','分','秒'))

#或者如下

print('另一种格式化的方法:',strftime('%Y{y}%m{m}%d{d}',localtime()).format(y='年',m='月',d='日'))

方法一: 2020年08月20日

方法二: 2020年08月20日 00时09分12秒

另一种格式化的方法: 2020年08月20日

二、datetime模块

datetime对象

from datetime import *

print(datetime.now())

#注意now()调用的方式,且返回的是datetime类存储时间类型

#用print函数输出时,相当于调用了str(datetime),将datetime类型转化成字符串类型

datetime.now()

2020-08-20 00:19:10.856333

datetime.datetime(2020, 8, 20, 0, 19, 10, 856333)

timedelta

datetime.now()-datetime(2020,8,19)

#datetime对象间的减法结果类型为timedelta,表示时间差

datetime.timedelta(days=1, seconds=1272, microseconds=850314)

也有strftime和strptime两种方法用于转换格式

from datetime import *

datetime.now().strftime('%Y %m %d')

'2020-08-20'

注意不要用错了strftime函数,写成

datetime.strftime('%Y-%m-%d',datetime object)

//否则报错

TypeError: descriptor 'strftime' requires a 'datetime.date' object but received a 'str'


版权声明:本文为weixin_39678493原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。