time 类

第九章-时间
time 类:time是一个时间类,由时、分、秒、微妙组成。
各参数的取值范围:
hour的范围为[0, 24)
minute的范围为[0, 60)
second的范围为[0, 60)
microsecond的范围为[0, 1000000)

import datetime
maxTime=datetime.time.max #获取time能表示的最大时间
maxTime
datetime.time(23, 59, 59, 999999)

print(maxTime)
23:59:59.999999

minTime=datetime.time.min #获取time能表示的最小时间
minTime
datetime.time(0, 0)

print(minTime)
00:00:00

time 类–hour 、 minute、 second、microsecond

from datetime import *
tm=datetime.now() #获取当前的时间
tm
datetime.datetime(2018, 10, 7, 19, 18, 17, 515877)

print™
2018-10-07 19:18:17.515877

tm.hour #获取时
19

print(tm.hour)
19

tm.minute #获取分
18

print(tm.minute)
18

tm.second #获取秒
17

print(tm.second)
17

tm.microsecond #获取毫秒
515877

print(tm.microsecond)
515877

1)time.replace函数:用给定的参数时、分、秒、微秒代替原有对象中的属性,创建一个新的时间对象,但原有对象仍保持不变。

from datetime import *
tm=datetime.now()
print™
2018-10-07 19:23:25.966603

tm1=tm.replace(hour=10,minute=10) #只替换指定的属性
tm1
datetime.datetime(2018, 10, 7, 10, 10, 25, 966603)

print(tm1)
2018-10-07 10:10:25.966603

print™ #原有对象仍保持不变
2018-10-07 19:23:25.966603

2)time.isoformat函数:返回时间格式如:HH:MM:SS的时间字符串表示。

from datetime import *
tm=time(23,46,10)
print™
23:46:10

tm1 = tm.isoformat()
print(tm1)
23:46:10

tm=time(24,2,2) #超过指定的区间
Traceback (most recent call last):
File “”, line 1, in
ValueError: hour must be in 0…23

tm=(12,10,33)
print(tm.isoformat())
Traceback (most recent call last):
File “”, line 1, in
AttributeError: ‘tuple’ object has no attribute ‘isoformat’

3)time.strftime函数:返回自定义格式时间字符串。

from datetime import *
tm=time(12,46,10)
print™
12:46:10

tm1=tm.strftime("%H-%M-%S") #自定义格式时间字符串
print(tm1)
12-46-10

tm2=tm.strftime("%H/%M/%S") #自定义格式时间字符串
print(tm2)
12/46/10

Datetime类
datetime类是date和time的结合体,包括date与time的所有信息,date和time类中具有的方法和属性,datetime类都具有。所以在我们日常的工作中,可以仅使用datetime类。
该类的构造函数:
datetime.datetime(year, month, day[, hour[, minute[, second[,microsecond[,tzinfo]]]]])
各参数的含义与date、 time构造函数中的一样,但是要注意各参数的取值范围。

1)Datetime类—today和now函数

from datetime import *
print(datetime.today())
2018-10-07 19:39:26.013935

print(datetime.now())
2018-10-07 19:39:38.901891

tm=datetime.now()
print™
2018-10-07 19:40:04.628730

print(tm.year)
2018

print(tm.month)
10

print(tm.day)
7

print(tm.hour)
19

print(tm.minute)
40

print(tm.second)
4

print(tm.microsecond)
628730

2)Datetime类—fromtimestamp函数
datetime.fromtimestamp(timestamp [, tz])根据时间戳创建一个datetime对象,参数tz指定时区信息,不传默认为
本地时区。

from datetime import *
import time
t=time.time() #获取当前时间戳
print(t)
1538912581.8924637

datetimes=datetime.fromtimestamp(t) #将时间戳转化为一个datetime对象
print(datetimes)
2018-10-07 19:43:01.892464

print(type(datetimes))
<class ‘datetime.datetime’>

print(str(datetimes))
2018-10-07 19:43:01.892464

3)Datetime类—datetime.strptime函数
datetime.strptime函数:将格式时间字符串转换为datetime对象。

import datetime
print (datetime.datetime.strptime(“2015-08-27 17:23:05”,"%Y-%m-%d %H:%M:%S"))
2015-08-27 17:23:05

Datetime类—year、 month、 day、 hour、 minute、 second属性

import datetime
t=datetime.datetime.now()
print(t)
2018-10-07 19:50:58.413364

print(t.year) #获取当前年份
2018

print(t.month) #获取当前月份
10

print(t.day) #获取当前日期
7

print(t.hour) #获取当前小时
19

print(t.minute) #获取当前分钟
50

print(t.second) #获取当前秒
58

print(t.microsecond) #获取当前毫秒
413364

4)Datetime类—datetime.date() 函数
datetime.date() 函数:获取时间中的日期对象date。

import datetime
tm=datetime.datetime.today()
print™
2018-10-07 19:55:53.034470

dates=datetime.datetime.date™ #获取时间中的日期对象date
print(dates)
2018-10-07

print(dates.year)
2018

print(dates.month)
10

print(dates.day)
7

print(dates.hour) #属性不存在报错
Traceback (most recent call last):
File “”, line 1, in
AttributeError: ‘datetime.date’ object has no attribute ‘hour’

5)Datetime类—datetime.time()函数
datetime.time()函数:获取时间中的日期对象time。

import datetime
tm=datetime.datetime.today()
print™
2018-10-07 19:59:11.945046

times=datetime.datetime.time™
print(times)
19:59:11.945046

print(times.year)
Traceback (most recent call last):
File “”, line 1, in
AttributeError: ‘datetime.time’ object has no attribute ‘year’

print(times.hour)
19

print(times.minute)
59

print(times.second)
11

print(times.microsecond)
945046

print(type(times))
<class ‘datetime.time’>

6)Datetime类—datetime.combine函数
datetime.combine函数:根据date和time,创建一个datetime对象。
参数
date:是datetime.date类型
time:是datetime.time类型

import datetime
print(datetime.datetime.combine(datetime.datetime.today(),datetime.time(17,12,35)))
2018-10-07 17:12:35

7)Datetime类—datetime.replace()函数
datetime.replace()函数:替换指定的属性
构造函数:
datetime.replace([year[, month[, day[, hour[, minute[,second[, microsecond[, tzinfo]]]]]]]])

import datetime
times=datetime.datetime.now()
times
datetime.datetime(2018, 10, 7, 20, 4, 35, 870489)

print(times)
2018-10-07 20:04:35.870489

t2=times.replace(year=2017,minute=10)
print(t2)
2017-10-07 20:10:35.870489

t3=times.replace(hour=25)
Traceback (most recent call last):
File “”, line 1, in
ValueError: hour must be in 0…23

8)Datetime类—mktime函数
mktime函数:将datetime对象转换成时间戳

import datetime
import time
t=datetime.datetime.now() #获取当前时间的datetime对象
print(t)
2018-10-07 20:07:31.532865

struct_time=t.timetuple() #根据当前时间的datetime对象获取当前时间的时间元组
print(struct_time)
time.struct_time(tm_year=2018, tm_mon=10, tm_mday=7, tm_hour=20, tm_min=7, tm_sec=31, tm_wday=6, tm_yday=280, tm_isdst=-1)

timestamp=time.mktime(struct_time) #根据当前时间的时间元组获得当前时间的时间戳
print(timestamp)
1538914051.0

timestamp=int(timestamp)
print(timestamp)
1538914051

9)Datetime类—datetime.weekday(time)函数
datetime.weekday(time)函数:参数time是一个datetime.date类型的数据。返回weekday中的星期几,星期一,返回0;星期二,返回1;以此类推。

import datetime
now=datetime.date.today()
print(now)
2018-10-07

print(datetime.date.weekday(now))
6

10)Datetime类—datetime.isocalendar(time)函数
datetime.isocalendar(time)函数:参数time是一个datetime.date类型数据

import datetime
now=datetime.datetime.now()
now
datetime.datetime(2018, 10, 7, 20, 13, 10, 898024)

print(now)
2018-10-07 20:13:10.898024

print(datetime.datetime.isocalendar(now)) #以元组的形式返回年月日
(2018, 40, 7)

11)Datetime类—datetime.strftime(format)函数
datetime.strftime(format)函数:返回自定义的格式时间字符串。参数format是自定义的时间格式。

import datetime
now=datetime.datetime.now()
print(now)
2018-10-07 20:15:32.571835

print(now.strftime(’%Y-%m-%d %H:%M:%S’)) #获取当前时间的格式化时间字符串
2018-10-07 20:15:32

print(now.strftime(’%y-%m-%d %I:%M:%S %p’)) #获取当前时间的格式化时间字符串
18-10-07 08:15:32 PM

print (now.strftime(’%A’)) #星期的全写
Sunday

print (now.strftime(’%a’)) #星期的简写
Sun

print (now.strftime(’%b’)) #月份的简写
Oct

print (now.strftime(’%B’)) #月份的全写
October

print (now.strftime(’%c’)) #得到日期时间的字符串
Sun Oct 7 20:15:32 2018

print (now.strftime(’%x’)) #日期字符串
10/07/18

print (now.strftime(’%X’)) #时间字符串
20:15:32

print (now.strftime(’%w’)) #今天在这周是星期几,从周日为开始算一周
0

print (now.strftime(’%j’)) #今天是今年的第几天
280

print (now.strftime(’%U’)) #这周是今年的第几周
40

Timedelta类
datetime.timedelta对象代表两个时间之间的时间差,两个date或datetime对象相减就可以返回一个timedelta对象。
构造函数:
class datetime.timedelta([days[, seconds[, microseconds[,milliseconds[, minutes[, hours[, weeks]]]]]]])
可以通过dir(datetime.timedelta)查看属性和方法。针对时间存储, timedelta内部只能存储days, seconds,microseconds,其他参数的值会自动按如下规则进行转换:
1 millisecond(毫秒)转换成 1000 microseconds(微秒)
1 minute 转换成 60 seconds
1 hour 转换成 3600 seconds
1 week转换成 7 days

import datetime
dir(datetime.timedelta)
[‘abs’, ‘add’, ‘bool’, ‘class’, ‘delattr’, ‘dir’, ‘divmod’, ‘doc’, ‘eq’, ‘floordiv’, ‘format’, ‘ge’, ‘getattribute’, ‘gt’, ‘hash’, ‘init’, ‘init_subclass’, ‘le’, ‘lt’, ‘mod’, ‘mul’, ‘ne’, ‘neg’, ‘new’, ‘pos’, ‘radd’, ‘rdivmod’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘rfloordiv’, ‘rmod’, ‘rmul’, ‘rsub’, ‘rtruediv’, ‘setattr’, ‘sizeof’, ‘str’, ‘sub’, ‘subclasshook’, ‘truediv’, ‘days’, ‘max’, ‘microseconds’, ‘min’, ‘resolution’, ‘seconds’, ‘total_seconds’]

datetime.timedelta(hours=1).seconds #小时转秒
3600

datetime.timedelta(minutes=10).seconds #分钟转秒
600

datetime.timedelta(days=1).seconds
0

datetime.timedelta(hours=2,seconds=30).seconds
7230

datetime.timedelta(seconds=30).microseconds
0

1)Timedelta类–两日期的时间相减

import datetime
d1= (datetime.datetime.now())
print(d1)
2018-10-07 20:30:26.629777

d1.year
2018

d2=d1.replace(year=2017,minute=10)
print(d2)
2017-10-07 20:10:26.629777

print((d2-d1).days) #两个时间相减时,就会返回一个datetime.timedelta时间对象,代表两个时间之间的时间差
-366

print((d1-d2).days)
365

print((d2-d1).minutes)
Traceback (most recent call last):
File “”, line 1, in
AttributeError: ‘datetime.timedelta’ object has no attribute ‘minutes’

print((d1-d2).minute)
Traceback (most recent call last):
File “”, line 1, in
AttributeError: ‘datetime.timedelta’ object has no attribute ‘minute’

print((d1-d2).seconds)
1200

2)Timedelta类–日期或时间加上或减去一个时间间隔
日期加上或减去一个时间间隔,是通过加减timedelta对象中的属性值给定值实现的。

import datetime
now = datetime.datetime.now() #获取当前的时间
print(now)
2018-10-07 20:37:40.392688

delta = datetime.timedelta(days = 1) #设定一个时间间隔,间隔为一天,当前时间加一天
newTime = now + delta #新时间
print (newTime)
2018-10-08 20:37:40.392688

print (str(newTime)[:-7]) #新时间去掉毫秒
2018-10-08 20:37:40

print (newTime.strftime(’%Y-%m-%d %H:%M:%S’)) #或者使用格式化函数
2018-10-08 20:37:40

delta = datetime.timedelta(days = -1) #当前时间减1天
newTime = now + delta
print (newTime)
2018-10-06 20:37:40.392688

from datetime import datetime
from datetime import timedelta
now = datetime.now()
delta = timedelta(days = -100) #设置100天前的时间间隔
oldTime = now + delta
print (oldTime.strftime("%Y-%m-%d")) #得到100天前的时间
2018-06-29

import datetime
datetime.datetime.today()
datetime.datetime(2018, 10, 7, 20, 46, 8, 16331)

print (datetime.datetime.today() + datetime.timedelta(days=-100))
2018-06-29 20:44:19.452650

datetime.date.today()
datetime.date(2018, 10, 7)

print (datetime.date.today() + datetime.timedelta(days=-100))
2018-06-29

import datetime
threeHoursAgo = datetime.datetime.now() -datetime.timedelta(hours = 3)
print (str(threeHoursAgo))
2018-10-07 17:47:05.861411

print (str(threeHoursAgo)[:-7])
2018-10-07 17:47:05

3)timedelta.total_seconds()函数
total_seconds()函数:该方法用于获取总共的秒数。

import datetime
seconds=datetime.timedelta(hours=1,seconds=30).total_seconds()
print(seconds)
3630.0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值