1. 程式人生 > >python中,time、calendar、datetime

python中,time、calendar、datetime

閒來無事,做做整理。
time模組:

import time

# 睡眠 引數(秒) 可以為小數
time.sleep(0)

# 獲取當前時間戳,從1970年1月1日0時0分0秒開始計算
t = time.time()  # 1543626884.3397386

# 獲取當前時區的時間元組time.struct_time物件
# 東八區
# time.struct_time(tm_year=2018, tm_mon=12, tm_mday=1, tm_hour=9, tm_min=17, tm_sec=21, tm_wday=5, tm_yday=335, tm_isdst=0)
t = time.localtime()

# 獲取0時區的時間元組time.struct_time物件
# 0時區 格林尼治時間
# time.struct_time(tm_year=2018, tm_mon=12, tm_mday=1, tm_hour=1, tm_min=29, tm_sec=6, tm_wday=5, tm_yday=335, tm_isdst=0)
t = time.gmtime()

# 根據時間元組time.struct_time物件建立時間戳
t = time.mktime((2018, 12, 1, 9, 17, 21, 5, 335, 0))  # 1543627041.0

# 0時區與當前時區相差的秒數
t = time.timezone

# 根據時間元組物件time.struct_time格式化輸出時間
t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())  # 2018-12-01 09:44:48

# 將時間戳轉化為標準輸出字串
t = time.ctime(time.time())  # Sat Dec  1 09:46:04 2018

# time clock() 函式以浮點數計算的秒數返回當前的CPU時間。用來衡量不同程式的耗時,比time.time()更有用。
# 這個需要注意,在不同的系統上含義不同。在UNIX系統上,它返回的是"程序時間",它是用秒錶示的浮點數(時間戳。
# 而在WINDOWS中,第一次呼叫,返回的是程序執行的實際時間。而第二次之後的呼叫是自第一次呼叫以後到現在的執行時間
# 第一次:4.1053936661986517e-07
# 第二次:8.210787332397303e-07
t = time.clock()

calendar模組:
import calendar

# 獲取某一年的日曆
# w:以幾個字母表示周幾
# l:每行間隔
# c:每月之間左右間隔
# m:每行顯示幾個月
# w, l, c, m都有預設值
c = calendar.calendar(2018, w=3, l=1, c=6, m=10)

# 獲取某一年某一月的日曆
c = calendar.month(2018, 12)

# 判斷某一年是否是閏年
c = calendar.isleap(2018)

# 計算兩年之間有多少閏年,左閉右開
c = calendar.leapdays(2000, 2008)  # 2

datetime.date模組:

from datetime import date
import time

# 建立date物件
# 根據年月日建立
# 引數都有指定範圍
d = date(2018, 12, 1)  # 2018-12-01

# 建立今天日期物件
d = date.today()  # 2018-12-01

# 根據時間戳建立
d = date.fromtimestamp(time.time())  # 2018-12-01

# 提取年月日
print(d.year, d.month, d.day)  # 2018 12 1

# 標準格式日期
d1 = date.isoformat(d)  # 2018-12-01

# 日期元組:年份,一年第幾周,星期幾1-7
d1 = date.isocalendar(d)  # (2018, 48, 6)

# 提取標準星期1-7
w = d.isoweekday()  # 6

# 星期0-6
w = d.weekday()  # 5

# 格式化日期
d2 = d.strftime('%Y/%m/%d')  # 2018/12/01

# 將日期轉化為時間元組
# time.struct_time(tm_year=2018, tm_mon=12, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=335, tm_isdst=-1)
tt = d.timetuple()

datetime.time:
from datetime import time

# 建立時間物件
t = time(10, 42, 59)  # 10:42:59

# 提取時分秒
print(t.hour, t.minute, t.second)  # 10 42 59

# 格式化
t = t.strftime('%H  %M  %S')  # 10  42  59

datetime.datetime:

from datetime import datetime
import time

# 建立物件
dt = datetime(2018, 12, 1, 11, 10, 59)  # 2018-12-01 11:10:59

# 根據時間戳建立物件
dt = datetime.fromtimestamp(time.time())

# 獲取當前時間,帶時區
dt = datetime.now()  # 2018-12-01 10:52:38.860742

# 獲取當前時間,不帶時區
dt = datetime.utcnow()  # 2018-12-01 02:53:37.564099

# 提取年月日時分秒
print(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second)  # 2018 12 1 2 56 59

# 格式化輸出
dt1 = dt.strftime('%Y-%m-%d %H:%M:%S')  # 2018-12-01 02:58:34

# 轉化為時間戳
t = dt.timestamp()  # 1543604449.06578

# 轉化為時間元組
# time.struct_time(tm_year=2018, tm_mon=12, tm_mday=1, tm_hour=3, tm_min=1, tm_sec=31, tm_wday=5, tm_yday=335, tm_isdst=-1)
t = dt.timetuple()

datetime.timedelta:

from datetime import datetime, timedelta

# 建立物件
# 可以指定很多引數,一般指定seconds或者days
td1 = timedelta(days=1)  # 1 day, 0:00:00
td2 = timedelta(seconds=3600)  # 1:00:00

dt1 = datetime(2018, 11, 11, 11, 11, 11)
dt2 = datetime(2018, 11, 15, 11, 11, 11)

# 計算時間差
td3 = dt2 - dt1  # 4 days, 0:00:00
td4 = dt1 - dt2  # -4 days, 0:00:00

# 獲取新時間
dt3 = dt1 + td1  # 2018-11-12 11:11:11
dt4 = dt1 - td2  # 2018-11-11 10:11:11

# 提取天數,秒數  天數秒數分開
print(td1.days, td1.seconds)  # 1 0

# 提取總共秒數
s = td1.total_seconds()  # 86400.0