目錄
- 一、time模塊
- 常用方法
- 二、datetime模塊
- 1 date類:datetime.date(year, month, day)
- 2 time類
- 3 datetime類
- 4 timedelta類
- 5 tzinfo類
一、time模塊
??time模塊功能接近于作業系統層面,有些函式是平臺相關的(如:time.clock()),可能會在不同的平臺有不同的效果,基于Unix Timestamp,所以其所能表述的日期范圍被限定在 1970 - 2038 之間,需要處理在前面所述范圍之外的日期,可能需要考慮使用datetime模塊,
time模塊中時間表現的格式主要有三種:
- timestamp時間戳,表示的是從1970年1月1日00:00:00開始按秒計算的偏移量,float
- struct_time時間元組,共有九個元素組,time.struct_time
- format time 格式化時間,已格式化的結構使時間更具可讀性,包括自定義格式和固定格式,str
struct_time元組屬性:
| 序號 | 屬性 | 值 |
|---|---|---|
| 0 | tm_year | 2008 |
| 1 | tm_mon | 1 到 12 |
| 2 | tm_mday | 1 到 31 |
| 3 | tm_hour | 0 到 23 |
| 4 | tm_min | 0 到 59 |
| 5 | tm_sec | 0 到 61 (60或61 是閏秒) |
| 6 | tm_wday | 0到6 (0是周一) |
| 7 | tm_yday | 1 到 366(儒略歷) |
| 8 | tm_isdst | -1, 0, 1, -1是決定是否為夏令時的旗幟 |
format time結構化表示:
| 格式 | 含義 |
| %a | 本地(locale)簡化星期名稱 |
| %A | 本地完整星期名稱 |
| %b | 本地簡化月份名稱 |
| %B | 本地完整月份名稱 |
| %c | 本地相應的日期和時間表示 |
| %d | 一個月中的第幾天(01 - 31) |
| %H | 一天中的第幾個小時(24小時制,00 - 23) |
| %I | 第幾個小時(12小時制,01 - 12) |
| %j | 一年中的第幾天(001 - 366) |
| %m | 月份(01 - 12) |
| %M | 分鐘數(00 - 59) |
| %p | 本地am或者pm的相應符 |
| %S | 秒(01 - 61) |
| %U | 一年中的星期數,(00 - 53星期天是一個星期的開始,)第一個星期天之前的所有天數都放在第0周, |
| %w | 一個星期中的第幾天(0 - 6,0是星期天) |
| %W | 和%U基本相同,不同的是%W以星期一為一個星期的開始, |
| %x | 本地相應日期 |
| %X | 本地相應時間 |
| %y | 去掉世紀的年份(00 - 99) |
| %Y | 完整的年份 |
| %Z | 時區的名字(如果不存在為空字符) |
| %% | ‘%’字符 |
常用方法
- 獲取時間
import time
# 獲取當地當前,以時間戳格式表現
time.time()
# 獲取當地當前,以時間元組格式表現
time.localtime() # 本地時間,東八區
time.gmtime() # 格林威治時間,0時區
# 獲取當地當前,以時間格式化形式表現
time.ctime()
time.asctime()
time.strftime("%Y-%m-%d %X")
- 形式轉換
# Timestamp——>struct_time
print("Timestamp——>struct_time:")
timestamp_now = time.time()
time.localtime(timestamp_now)
time.gmtime(timestamp_now)
# struct_time——>formating time
print("struct_time——>formating time:")
structtime_now = time.localtime()
time.strftime('%Y',structtime_now)
time.strftime("%Y-%m-%d %X",structtime_now)
time.asctime(structtime_now)
# formating time——>struct_time
print("formating time——>struct_time:")
formatingtime_now = '2021-06-13 16:37:06'
time.strptime(formatingtime_now,"%Y-%m-%d %X")
time.strptime("30 Nov 00", "%d %b %y")
# struct_time——>Timestamp
print("struct_time——>Timestamp:")
time.mktime(structtime_now)
# Timestamp——>formating time
print("Timestamp——>formating time:")
time.ctime(timestamp_now)
其他:菜鳥教程
二、datetime模塊
??datetime 基于 time 進行了封裝,提供了更多實用的函式介面,在datetime 模塊中包含了幾個類:
- datetime:時間和日期
- date:只關注日期
- time:只關注時間
- tzinfo:時區相關
- timedelta:用于計算時間跨度
??實際實用中,用得比較多的是 datetime.datetime 和 datetime.timedelta ,另外兩個 datetime.date 和 datetime.time 實際使用和 datetime.datetime 并無太大差別,
1 date類:datetime.date(year, month, day)
from datetime import date
import time
# 靜態方法
date.max # date物件所能表示的最大、最小日期;
date.min
date.resolution # date物件表示日期的最小單位:天.
# 構造date物件
date.today() # 回傳一個表示當前本地日期的date物件
date(2021, 6, 13) # date物件
# date物件常用方法和屬性
now_date = date.today()
now_date.year # 年、月、日
now_date.month
now_date.day
now_date.replace(month=7) # 生成一個新的日期物件,用引數指定的年,月,日代替原有物件中的屬性,(原物件仍保持不變)
now_date.timetuple() # 回傳日期對應的time.struct_time物件
now_date.weekday() # 回傳星期幾weekday,如果是星期一,回傳0;如果是星期2,回傳1,以此類推;(從0開始)
now_date.isoweekday() # 回傳weekday,如果是星期一,回傳1;如果是星期2,回傳2,以此類推;(從1開始)
now_date.isoformat() # 回傳格式如'YYYY-MM-DD’的字串;
now_date.isocalendar() # 回傳格式如(year,month,day)的元組;
now_date.strftime(format='%y') # 回傳格式化后的字串,格式和time模塊format相同
2 time類
datetime.time(hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] )
from datetime import time
import time
# 靜態方法
time.max
time.min
time.resolution # 1微妙
now_time = time(14,9,5,32) # 構造time物件
# 方法和屬性
now_time.hour
now_time.minute
now_time.second
now_time.microsecond # 微秒
# now_time.tzinfo # 時區資訊
now_time.replace(minute=59)
now_time.isoformat() # 回傳型如"HH:MM:SS"格式的字串表示;
now_time.strftime(format='%H-%M %S') # 格式化輸出
3 datetime類
datetime相當于date和time的結合:
datetime.datetime (year, month, day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] )
from datetime import datetime
import time
# 靜態方法
datetime.max
datetime.min
datetime.resolution

# 構造datetime類:可以根據tz引數指定時區
datetime.today()
datetime.now() # 可以傳入tz引數,獲取tz引數所指時區的本地時間
datetime.utcnow() # 格林威治時間,0時區 tz=0
# datetime.fromtimestamp(timestamp[, tz]) 根據時間戮創建一個datetime物件,引數tz指定時區資訊;
# datetime.utcfromtimestamp(timestamp) 根據時間戮創建一個datetime物件;
# datetime.combine(date, time) 根據date和time,創建一個datetime物件;
# datetime.strptime(date_string, format) 將格式字串轉換為datetime物件;

# 一些方法和屬性
dt_now=datetime.now()#datetime物件
dt_now
dt_now.year
# dt.year、month、day、hour、minute、second、microsecond、tzinfo
dt_now.replace(year=2020,day=9)
dt_now.timetuple() # 回傳日期對應的time.struct_time物件
dt_now.utctimetuple()
dt_now.toordinal()
dt_now.weekday()
dt_now.isoweekday()
dt_now.isocalendar()
dt_now.isoformat()
dt_now.ctime()
dt_now.strftime("%Y %X")
4 timedelta類
from datetime import datetime
from datetime import timedelta
dt = datetime.now()
# 日期偏移操作
dt
tomorrow = dt + timedelta(days=1) # 明天
tomorrow
yesterday = dt + timedelta(days=-1) # 昨天
yesterday
timedelta_ = tomorrow - yesterday # timedelta物件
timedelta_
timedelta_.days # 時間偏移的天數
timedelta_.total_seconds() # 時間偏移的秒數
5 tzinfo類
from datetime import datetime, tzinfo,timedelta
"""
tzinfo是關于時區資訊的類
tzinfo是一個抽象類,所以不能直接被實體化
"""
class UTC(tzinfo):
"""UTC"""
def __init__(self,offset = 0):
self._offset = offset
def utcoffset(self, dt):
return timedelta(hours=self._offset)
def tzname(self, dt):
return "UTC +%s" % self._offset
def dst(self, dt):
return timedelta(hours=self._offset)
#北京時間
beijing = datetime(2011,11,11,0,0,0,tzinfo = UTC(8))
#曼谷時間
bangkok = datetime(2011,11,11,0,0,0,tzinfo = UTC(7))
#北京時間轉成曼谷時間
beijing.astimezone(UTC(7))
#計算時間差時也會考慮時區的問題
timespan = beijing - bangkok
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/287063.html
標籤:其他
上一篇:130_郵件發送
