python -- time和datetime模块

python -- time和datetime模块

time模块

在Python中,通常有几种方式表示时间:

  • 时间戳,单位是 。时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。Unix诞生年。
  • 格式化的时间字符串
  • 元组(struct_time)共9个元素

UTC(Coordinated Universal Time世界协调时),即格林威治天文时间,世界标准时间。在中国为UTC+8.,比标准时间早8个小时。

DST(Daylight Saving Time),夏令时。

import time

x = time.localtime()
print(x)

'''
time.struct_time(tm_year=2017, 
tm_mon=7, tm_mday=7, tm_hour=14, 
tm_min=24, tm_sec=22, tm_wday=4, 
tm_yday=188, tm_isdst=0)

tm_year=2017  年, 
tm_mon=7  月, 
tm_mday=7  日, 
tm_hour=14  时, 
tm_min=24  分, 
tm_sec=22  秒, 
tm_wday=4  一周的第4天, 
tm_yday=188  一年的第188天, 
tm_isdst=0  不是夏令时)
'''

time的变量

  • time.timezone,单位(秒),本地时间与UTC的差值;
  • time.altzone,单位(秒),本地时间与夏令时的差值;
  • time.daylight,是否是夏令时;
  • time.tzname,元组(标准时间区名,夏令时区名)

time的方法

  • time.time(),获取时间戳
  • time.clock(), 不同的平台效果不同,忘了吧
  • time.sleep(),让程序睡几秒
  • time.gmtime(时间戳),把时间戳转struct_time。默认值是当前的时间,但是转成UTC的时间,所以会和当地时间有时差。
  • time.localtime(时间戳),把时间戳转struct_time。默认值是当前的时间。
  • time.mktime(struct_time),把struct_time转成时间戳。
  • time.strftime(),把struct_time转成格式化字符串,time.strftime('格式', struct_time)。
  • time.strptime(),把格式化字符串转成struct_time,time.strptime('格式化的字符串', '格式')。对应的位置要一一对应上!!
  • time.asctime(struct_time),把struct_time转成特定的格式。
  • time.ctime(时间戳),把时间戳转成特定的格式。
graph TD
A["time模块"]-->|"time.time()"|B["Timestamp时间戳"]
B-->|"time.gmtime()"|C["Struct_time"]
B-->|"time.localtime()"|C["Struct_time"]
C-->|"time.mktime()"|B
C-->|"time.strftime()"|D["格式化"]
D-->|"time.strptime()"|C

time.asctime()和time.ctime()的关系

import datetime, time

x = time.localtime()
y = time.time()
a = time.asctime(x)
b = time.ctime(y)

print(a)
print(b)
graph TD
A["Struct_time"]-->|"time.asctime()"|B["%a %b %d %H %M %S %Y 串"]
C["Timestamp时间戳"]-->|"time.ctime()"|B

一些例子

import time

'''tm_year,tm_mon,tm_mday,
tm_hour,tm_min,tm_sec,
tm_wday,tm_yday,tm_isdst'''
x = time.localtime()
print(x.tm_year)
print(x.tm_mon)
print(x.tm_mday)
print(x.tm_hour)

import time

x = time.localtime()
'''y与之间的互转,strftime--strptime'''
y = time.strftime('%y-%m-%d %H-%M-%S', x)
z = time.strptime(y, '%y-%m-%d %H-%M-%S')
print(y)
print(z)

datetime模块

  • datetime.date.now(),获得当前时间
  • datetime.timedelta()需要和datatime.datetime.now()配合使用
import datetime,time

'''返回当前时间'''
x = datetime.datetime.now()
'''当前时间+3天'''
y = x + datetime.timedelta(3)
'''当前时间-3天'''
z = x + datetime.timedelta(-3)
'''当前时间+3小时'''
a = x + datetime.timedelta(hours=3)
'''当前时间-30分钟'''
b = x + datetime.timedelta(minutes=-30)
c = x.fromtimestamp(time.time())
'''修改时间'''
c_time = datetime.datetime.now()
re_c_time = c_time.replace(minute=3, hour=2)
print(x)
print(y)
print(z)
print(a)
print('--------------------')
print(c)
print('********************')
print(re_c_time)

写在后面

参数说明 内容 备注
%Y
%m 01~12
%d 01~31
%H 24时 00~23
%M 00~59
%S 00~61
%z 时区的名称
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化月份名称
%B 本地完整月份名称
%c 本地相应的日期和时间表示
%I 12时 01~12
%p AM/PM
posted @ 2017-07-19 18:07  gzz041  阅读(162)  评论(0)    收藏  举报