一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

「Python編程」自由管理時(shí)間之編寫一個(gè)小鬧鐘起床

 靜幻堂 2018-11-18
輕松學(xué)習(xí)Linux 2018-11-17 22:07:01

Python_時(shí)間管理

代碼中的時(shí)間

  • 時(shí)間戳(Timestamp):1473525444
  • 時(shí)間字符串(Format String):2015-02-14 11:25:11
  • 結(jié)構(gòu)化時(shí)間:(struct_time):(year=2018, monch=5, day=1, hour=16, min=12, sec=6)

1、常用的時(shí)間模塊

  • time
  • datetime
  • python-dateutil(pip install)

常用的操作:

  • 時(shí)間各種格式的表示
  • 各種加減運(yùn)算

使用time模塊

#!/usr/bin/env python
import time
print(time.time())
>>>1542443575.7989876 # time.time() 輸出的結(jié)果為時(shí)間戳

例1:使用時(shí)間戳來判斷代碼運(yùn)行的時(shí)間

#!/usr/bin/env python
import time
def case():
start_time = time.time()
Your_name = input("Please enter your name:")
Your_pwd = input("Please enter your password:")
stop_time = time.time()
print(f"恭喜您輸入成功,用時(shí)時(shí)間為{stop_time - start_time}秒")
if __name__ == "__main__":
case()
>>> 輸出結(jié)果為:
Please enter your name:延凱
Please enter your password:pwd23
恭喜您輸入成功,用時(shí)時(shí)間為4.129451036453247秒

使用time.sleep()

#!/usr/bin/env python
import time
for i in range(6):
time.sleep(1)
print(i)
>>>
0
-----------每隔一秒輸出內(nèi)容
1
-----------每隔一秒輸出內(nèi)容
2
-----------每隔一秒輸出內(nèi)容
3
-----------每隔一秒輸出內(nèi)容
4
-----------每隔一秒輸出內(nèi)容
5

二、結(jié)構(gòu)化時(shí)間與時(shí)間戳的轉(zhuǎn)換

2.1、結(jié)構(gòu)化時(shí)間使用time.localtime()模塊如下:

print(time.localtime()) # 此結(jié)構(gòu)化時(shí)間輸出的內(nèi)容為當(dāng)前的結(jié)構(gòu)化時(shí)間
>>>time.struct_time(tm_year=2018, tm_mon=11, tm_mday=17, tm_hour=16, tm_min=43, tm_sec=53, tm_wday=5, tm_yday=321, tm_isdst=0)

例1:將時(shí)間戳轉(zhuǎn)換為結(jié)構(gòu)化時(shí)間

print(time.localtime(1525617114)) # 括號(hào)中的數(shù)字為時(shí)間戳,此代碼能夠?qū)r(shí)間戳轉(zhuǎn)換為結(jié)構(gòu)化時(shí)間,輸出如下:
>>>time.struct_time(tm_year=2018, tm_mon=5, tm_mday=6, tm_hour=22, tm_min=31, tm_sec=54, tm_wday=6, tm_yday=126, tm_isdst=0)

例2:將結(jié)構(gòu)化時(shí)間轉(zhuǎn)換為時(shí)間戳

print(time.mktime(time.struct_time(time.localtime()))) # 括號(hào)中的time.localtime() 獲取當(dāng)前的結(jié)構(gòu)化時(shí)間,使用mktime 將結(jié)構(gòu)化時(shí)間轉(zhuǎn)換為時(shí)間戳
>>>>1542444612.0 #

三、結(jié)構(gòu)化時(shí)間與字符串類型時(shí)間的轉(zhuǎn)換

例1:將結(jié)構(gòu)化時(shí)間轉(zhuǎn)換為字符串類型的時(shí)間

print(time.strftime("%Y-%m-%d %X", time.localtime())) # 使用time.strftime()
>>>2018-11-17 16:52:34
# %Y == 年 == year
# %m == 月 == month
# %d == 日 == day
# %X === 表示當(dāng)前時(shí)間

例2:將字符串類型的時(shí)間轉(zhuǎn)換為結(jié)構(gòu)化的時(shí)間

print(time.strptime("2018-11-17 17:03:29","%Y-%m-%d %X"))
>>> time.struct_time(tm_year=2018, tm_mon=11, tm_mday=17, tm_hour=17, tm_min=3, tm_sec=29, tm_wday=5, tm_yday=321, tm_isdst=-1)

四、datetime模塊的應(yīng)用

4.1、time和datetime的區(qū)別?

time

Python 文檔里,time是歸類在Generic Operating System Services中,換句話說, 它提供的功能是更加接近于操作系統(tǒng)層面的。通讀文檔可知,time 模塊是圍繞著 Unix Timestamp 進(jìn)行的。

該模塊主要包括一個(gè)類 struct_time,另外其他幾個(gè)函數(shù)及相關(guān)常量。 需要注意的是在該模塊中的大多數(shù)函數(shù)是調(diào)用了所在平臺(tái)C library的同名函數(shù), 所以要特別注意有些函數(shù)是平臺(tái)相關(guān)的,可能會(huì)在不同的平臺(tái)有不同的效果。另外一點(diǎn)是,由于是基于Unix Timestamp,所以其所能表述的日期范圍被限定在 1970 - 2038 之間,如果你寫的代碼需要處理在前面所述范圍之外的日期,那可能需要考慮使用datetime模塊更好

datetime

datetime 比 time 高級(jí)了不少,可以理解為 datetime 基于 time 進(jìn)行了封裝,提供了更多實(shí)用的函數(shù)。在datetime 模塊中包含了幾個(gè)類,具體關(guān)系如下:

  • timedelta # 主要用于計(jì)算時(shí)間跨度
  • tzinfo # 時(shí)區(qū)相關(guān)
  • time # 只關(guān)注時(shí)間
  • date # 只關(guān)注日期
  • datetime # 同時(shí)有時(shí)間和日期

4.2、使用datetime

使用datetime.now查看當(dāng)前的時(shí)間

#!/usr/bin/env python
# -*- coding:utf-8 -*-
print(datetime.now())
>>>2018-11-17 17:17:26.024017

例1:格式化輸出時(shí)間

from datetime import datetime
print("{dt:%Y-%m-%d}".format(dt=datetime.now()))
>>>2018-11-17

例2:使用string輸出

print(f"{datetime.now():%Y-%m-%d}")
>>>2018-11-17

4.3、使用date

from datetime import date # 導(dǎo)入date方法
D = date(2018, 11, 6) # date() 可直接自定義日期
print(D)

例1:使用date.today() 查看當(dāng)前日期

from datetime import date
D = date.today()
print(D)
>>> 2018-11-17

4.4、使用time

from datetime import time
T = time(11, 6)
print(T)
>>>11:06:00

五、時(shí)間中的各種計(jì)算

使用時(shí)間計(jì)算,我們需要用到timedelta

例1:

D = timedelta(days=1)
print(D)
>>> 1 day, 0:00:00

例2:

H = timedelta(hours=3)
print(H)
>>>3:00:00

例3:

DT = timedelta(days=1, hours=3)
print(DT)
>>>1 day, 3:00:00

例4:時(shí)間的相加如下:

from datetime import timedelta
from datetime import date
dt = date.today()
D = timedelta(days=1, hours=3)
print(f"今日的時(shí)間為{dt},加了{(lán)D}時(shí)間,最終的時(shí)間為:{dt + D}")
>>> 今日的時(shí)間為2018-11-17,加了1 day, 3:00:00時(shí)間,最終的時(shí)間為:2018-11-18

例5:同時(shí)時(shí)間也可以相乘

from datetime import timedelta
from datetime import date
dt = date.today()
D = timedelta(days=1, hours=3)
print(f"今日的時(shí)間為{dt},加了{(lán)D}時(shí)間,時(shí)間為:{dt + D}隨后又乘了10天 最終結(jié)果為:{dt + D * 10}")
>>>今日的時(shí)間為2018-11-17,加了1 day, 3:00:00時(shí)間,時(shí)間為:2018-11-18隨后又乘了10天 最終結(jié)果為:2018-11-28

六、從時(shí)間戳生成datetime

import time
from datetime import datetime
dt = time.time()
print(datetime.utcfromtimestamp(dt))
>>>2018-11-17 10:08:44.600438

七、格式化字符串表示時(shí)間

  • strftime: % -> 1999-12-12, 把代碼里面的時(shí)間對象轉(zhuǎn)成人類認(rèn)識(shí)的字符串,f:format
  • strptime: 2000-12-12 -> object,把人類認(rèn)識(shí)的字符串,轉(zhuǎn)成代碼里面的對象,p,parse
from datetime import datetime
dt = datetime(2018, 11, 6, 11, 13, 59)
print(dt)
print(dt.strftime("%Y/%m/%d %X"))
print(dt.strptime("2018/11/06 11:13:59", "%Y/%m/%d %X"))
>>>
2018-11-06 11:13:59
2018/11/06 11:13:59
2018-11-06 11:13:59

八、使用dateutil更好的控制時(shí)間

pip install python-timeutil # 安裝timeutil

案例1:查看這周的周三是幾號(hào)

D = datetime.now()
print(D + relativedelta(weekday=WE, weeks=-1))

案例2:查看下周的周三是幾號(hào)

print(D + relativedelta(weekday=WE))

案例3:查看下下周的周三是幾號(hào)

print(D + relativedelta(weekday=WE, weeks=1))

案例4:查看上周的周三是幾號(hào)

print(D + relativedelta(weekday=WE, weeks=-2))

案例5:查看上上周的周三是幾號(hào)

print(D + relativedelta(weekday=WE, weeks=-3))

輸出結(jié)果

2018-11-14 18:35:00.375102
2018-11-21 18:35:00.375102
2018-11-28 18:35:00.375102
2018-11-07 18:35:00.375102
2018-10-31 18:35:00.375102

過一個(gè)月,三個(gè)月是哪天?

from datetime import date
print(date(2018, 1, 30) + relativedelta(months=+4))
print(date(2018, 1, 30) + relativedelta(months=-4))
>>>
2018-05-30
2017-09-30

實(shí)例:編寫一個(gè)鬧鐘

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import sys
import time
import subprocess
set_time = input("請您設(shè)置鬧鐘時(shí)間(例如:8:00):")
print("當(dāng)前的時(shí)間為:")
def clock():
start = True
while start:
local_time = time.localtime()
now = time.strftime("%H:%M:%S", local_time)
print(now + " ", end="", flush=True)
if now[:5] == set_time.rjust(5, "0"):
print("起床時(shí)間到了?。。。。?!")
subprocess.Popen(["start", "好運(yùn)來.mp3"], shell=True)
start = False
clock()
「Python編程」自由管理時(shí)間之編寫一個(gè)小鬧鐘起床

「Python編程」自由管理時(shí)間之編寫一個(gè)小鬧鐘起床

歌聲隨風(fēng)響起~

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多

    欧美夫妻性生活一区二区| 亚洲精品一区三区三区| 一区二区日本一区二区欧美| 国产欧美另类激情久久久| 白白操白白在线免费观看| 激情综合五月开心久久| 日韩国产亚洲一区二区三区| 人妻一区二区三区在线| 99久久人妻精品免费一区| 日韩人妻av中文字幕| 国产成人精品国产亚洲欧洲| 亚洲欧美日韩中文字幕二欧美| 亚洲高清欧美中文字幕| 黄色片一区二区三区高清| 日韩人妻一区中文字幕| 国内女人精品一区二区三区| 国产精品亚洲精品亚洲| 日本精品中文字幕在线视频| 久久精品a毛片看国产成人| 九九热视频经典在线观看| 国产超碰在线观看免费| 精品综合欧美一区二区三区| 国产一区一一一区麻豆| 日韩欧美中文字幕人妻| 国产成人av在线免播放观看av| 97人摸人人澡人人人超碰| 国产午夜精品福利免费不| 国产一二三区不卡视频| 在线免费看国产精品黄片| 国产精品亚洲欧美一区麻豆| 午夜亚洲少妇福利诱惑| 国产福利在线播放麻豆| 亚洲免费黄色高清在线观看| 国产亚洲精品岁国产微拍精品| 精品一区二区三区中文字幕| 国产老熟女超碰一区二区三区| 麻豆视传媒短视频免费观看 | 久草视频在线视频在线观看| 经典欧美熟女激情综合网| 99国产精品国产精品九九| 九九热在线视频观看最新|