[oeasy]python0024_unix時(shí)間戳_epoch_localtime_asctime_PosixTime_unix
輸出時(shí)間
回憶上次內(nèi)容
通過搜索
我們學(xué)會(huì)
import
導(dǎo)入time
了完整寫法為
asc_time = time.asctime( time.localtime( time.time()))

內(nèi)部函數(shù)是在
__builtins__
這個(gè)包里面的自帶的比如 quit()
import time ascii_time = time.asctime( time.localtime( time.time()))print (ascii_time)
這一大長串的函數(shù)究竟應(yīng)該如何理解呢????
首先要分清函數(shù)和參數(shù)
就像要分清工藝和原料
原料與產(chǎn)品
模型車間
原料是木材
工藝是將木材制作為木頭模型

上色車間
原料是木頭模型
工藝是給木塊上色

本車間的產(chǎn)品是下一個(gè)車間的原料
函數(shù)的嵌套也是如此
本函數(shù)的返回值可以是下一個(gè)函數(shù)的參數(shù)
嵌套的函數(shù)
這個(gè)一大串東西是有規(guī)律的
首先什么是 time

time是一個(gè)module(包)
這個(gè)包里面都有些什么呢?
time包中
time 是一個(gè) module (模塊包)
處理時(shí)間的包

help(time)
引入了time這個(gè)包之后
就可以查詢 time 包的幫助
這里面有time.time嗎?
翻到最后
可以找到time.time函數(shù)

除了time.time()
time.localtime()
time.asctime()
這三個(gè)都是time里面的函數(shù)
還可以找到
我可以只看time.time的幫助嗎?
具體函數(shù)幫助手冊
help(time.time)

例子是一行寫成的
ascii_time = time.asctime(time.localtime(time.time()))
函數(shù)是一層層嵌套的
可以分拆成幾行嗎?
分開寫
time.time這個(gè)函數(shù)不接受參數(shù)
返回的是一個(gè)浮點(diǎn)數(shù)

原來
我們使用了函數(shù)嵌套調(diào)用
現(xiàn)在
我們試試把函數(shù)嵌套調(diào)用拆開
不用嵌套
分開寫
一點(diǎn)點(diǎn)來剖析
分布的過程
函數(shù)嵌套調(diào)用
首先通過調(diào)用 time.time()函數(shù) 得到了ticks
然后通過調(diào)用 localtime(ticks)函數(shù) 得到了local_time
最后通過調(diào)用 asctime(localtime) 得到了ascii_time

這分步的過程就像工廠車間
步驟分拆
當(dāng)前函數(shù)的返回值是下一個(gè)函數(shù)的參數(shù)

那么這些函數(shù)
time
localtime
asctime
都是什么意思
分別help一下
<span style="color:red">time</span>.<span style="color:green">time()</span>
help(time.time)

這里有兩個(gè)time有點(diǎn)亂
我們區(qū)分一下顏色 ? ?
前面的是紅色的 time ? ?
后面的是綠色的 time()time.time() ? ?
紅色的是 time 這個(gè)包(module) ?
?time 包(module)里面有很多函數(shù)(function) ? ?
圓括號(hào)說明綠色的 time() 是函數(shù) ? ?
紅色綠色之間的.的意思是 里面的 ? ?
從time 包里調(diào)用.(里面的) time() 這個(gè)函數(shù)(function) ? ?
這個(gè) time() 函數(shù) 就是 ?time 包 里面 的函數(shù)
那么這個(gè)time.time()到底返回什么值呢?
調(diào)用
調(diào)用一下看看

這一串長長的數(shù)字應(yīng)該如何理解
time.time()的意義
我們還是得返回來看幫助文件

這個(gè)東西返回的是一個(gè)浮點(diǎn)型的數(shù)字
浮點(diǎn)的浮是浮動(dòng)的浮
浮點(diǎn)的點(diǎn)是小數(shù)點(diǎn)的點(diǎn)
這個(gè)值是從Epoch到當(dāng)前的時(shí)間總共過了多少秒

那什么又是Epoch呢?
Epoch
發(fā)音是[?ep?k]
Epoch 的意思是紀(jì)年方法或者說是年號(hào)
公元2022年日本紀(jì)年法令和四年
公元1587年是明朝萬歷十五年
今年是耶穌紀(jì)年法2022年

那python中的Epoch年號(hào)
又是什么年號(hào)呢?
unix紀(jì)年法
unix紀(jì)年法(unix時(shí)間戳)
seconds since the Epoch
從1970年1月1日開始的
也就是1970-01-01T00:00:00Z
格林威治天文臺(tái)標(biāo)準(zhǔn)時(shí)間(Greenwich Mean Time)
1970 年 1 月 1 日 00:00:00
每過一秒這個(gè)數(shù)字就加1
每過半秒這個(gè)數(shù)字就加0.5
所以Epoch也叫做
為什么是1970-01-01呢?
第一版unix的正式發(fā)布是在1971年
編寫c和unix工作是從1969年開始實(shí)施的
大概率是
Kenneth Thompson
和Dennis Ritchie
在1970年初一拍腦門定下來了這個(gè)起始時(shí)間點(diǎn)
上游影響下游
這個(gè)關(guān)于秒數(shù)的數(shù)據(jù)類型time_t也已然在后來成了標(biāo)準(zhǔn)c庫的一部分
因此被廣泛運(yùn)用在各種 類unix(Unix-like)的軟件系統(tǒng)中
比如我們用到的這個(gè)debian的變種ubuntu
所以 Epoch 也叫做
Unix Time
Posix Time
UNIX Epoch Time

time.time()得到的是一個(gè)浮點(diǎn)數(shù)
但是我們要的是年份、月份、日期、時(shí)分秒這些具體的信息
考慮到從閏年到閏秒的一系列難題
這個(gè)轉(zhuǎn)化太麻煩了
有什么辦法么?
time.localtime()

time.time()出來的浮點(diǎn)秒數(shù)交給 time.localtime()處理
年份、月份、日期、時(shí)分秒這些具體的信息
time 還是包名
這次的函數(shù)名變成了 localtime()
輸入是unix時(shí)間戳
輸出本地時(shí)間元組

如果不給time.localtime函數(shù)任何參數(shù)
那么time.localtime默認(rèn)使用time.time()作為參數(shù)
time.time()我們剛才研究過
time.time()就是當(dāng)前時(shí)間的unix時(shí)間戳

這兩個(gè)結(jié)果是一樣的
time.asctime()
time.asctime 函數(shù)
time.localtime()輸出的時(shí)間元組
輸入?yún)?shù)為
輸出為一個(gè)字符串

asctime函數(shù) 接收時(shí)間元組產(chǎn)生 ascii 字符串
ascii 就是 ascii編碼
asctime 就是 用ascii方式顯示的 time
asctime函數(shù)也有默認(rèn)缺省參數(shù)么?
asctime的默認(rèn)缺省參數(shù)
查詢文檔

如果不給asctime函數(shù)任何參數(shù)
time.localtime()
就是當(dāng)前時(shí)間的時(shí)間元組
默認(rèn)使用time.localtime()作為參數(shù)

最后輸出
我們都使用默認(rèn)參數(shù)
把函數(shù)嵌套大大簡化了
把最后的結(jié)果交給 print()
最終就能得到當(dāng)前的時(shí)間!??

我可以讓時(shí)間刷新么?
手動(dòng)延遲
我想要刷新這個(gè)東西怎么辦?
需要手動(dòng)刷新得到
asc_time
然后重新輸出
asc_time
這個(gè)過程可以手動(dòng)來完成

但我想讓他自動(dòng)刷新起來
先去編寫一個(gè)py程序
編寫程序

運(yùn)行結(jié)果

每次執(zhí)行python3 test.py
就刷新
刷新完全靠手??
總結(jié)
time 是一個(gè)
module
得到時(shí)間日期字符串
asc為ascii
得到本地時(shí)間元組
local為本地
得到當(dāng)前時(shí)間戳
import 他可以做和時(shí)間相關(guān)的事情
time.time()
time.localtime()
time.asctime()
簡略的寫法為
asc_time = time.asctime()
在
time.asctime()
中time是導(dǎo)入的module
asctime 是 time 這個(gè) module 里面的函數(shù)
現(xiàn)在我想要自動(dòng)刷新時(shí)間,怎么辦???
我們下次再說!??
藍(lán)橋->https://www.lanqiao.cn/teacher/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython
視頻->https://www.bilibili.com/video/BV1CU4y1Z7gQ 作者:oeasy