真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Linux/Unix中時(shí)間和時(shí)間戳的示例分析-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“Linux/Unix中時(shí)間和時(shí)間戳的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Linux/Unix中時(shí)間和時(shí)間戳的示例分析”這篇文章吧。

專注于為中小企業(yè)提供網(wǎng)站制作、網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)寶清免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了近1000家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

在日常開(kāi)發(fā)中,長(zhǎng)期是在從事后端服務(wù)器開(kāi)發(fā),也避免不了會(huì)經(jīng)常和時(shí)間打交道,例如:

玩家的首次登錄時(shí)間玩家的最后登錄時(shí)間活動(dòng)的開(kāi)啟時(shí)間和結(jié)束時(shí)間

而這些時(shí)間在程序中的表示就是用一個(gè)數(shù)字,我們把這個(gè)數(shù)字稱為時(shí)間戳(Timestamp)。
更多的情況下,我們是用一個(gè)整型數(shù)字來(lái)表示這個(gè)時(shí)間戳。

每一個(gè)不同的整型數(shù)字都有不同的含義,他們都代表一個(gè)獨(dú)一無(wú)二的時(shí)間,例如:

0 : 代表 1970年的元旦節(jié)(1970.1.1 00:00:00 UTC) 60 : 代表 1970年元旦節(jié)剛過(guò)一分鐘(1970.1.1 00:00:60 UTC) 3600 : 代表 1970年元旦節(jié)過(guò)去一個(gè)小時(shí)了(1970.1.1 01:00:00 UTC) 43200 : 代表 1970年元旦節(jié)午餐時(shí)間到了(1970.1.1 12:00:00 UTC) 86400 : 代表 1970年元旦節(jié)過(guò)完了(1970.1.2 00:00:00 UTC)

結(jié)合上面的例子,對(duì)時(shí)間戳(Timestamp)的定義就清晰明了了,時(shí)間戳是一個(gè)數(shù)字,這個(gè)數(shù)字代表的是從1970年元旦節(jié)(1970.1.1 00:00:00)所經(jīng)過(guò)(流逝)的秒數(shù)。

明確了這個(gè)概念,如果我們?cè)倏吹揭粋€(gè)數(shù)字,并且知道它就是代表一個(gè)時(shí)間戳,那我們應(yīng)該會(huì)迫不及待的想把它轉(zhuǎn)換成它代表的時(shí)間。

中話

其實(shí)我只是想記錄一下Linux/Unix系統(tǒng)下關(guān)于date命令行工具的使用指南,不料卻回憶了一下關(guān)于時(shí)間戳的簡(jiǎn)要概念。

事情的由來(lái)是,在很長(zhǎng)一段時(shí)間內(nèi),我在拿到一個(gè)時(shí)間戳并且想看看這個(gè)時(shí)間戳究竟是具體的哪一天哪一年甚至于哪一分哪一秒的時(shí)候(通常在程序出現(xiàn)問(wèn)題需要定位和時(shí)間有關(guān)的BUG的時(shí)候)。我都會(huì)習(xí)慣性的打開(kāi)某搜索引擎然后輸入時(shí)間戳這個(gè)關(guān)鍵詞進(jìn)行搜索,然后熟練的點(diǎn)擊搜索結(jié)果的第一條Unix時(shí)間戳轉(zhuǎn)換工具,直到某一天我覺(jué)得要糾正掉這個(gè)不好的習(xí)慣,我才開(kāi)始試著去使用date這個(gè)Linux/Unix系統(tǒng)標(biāo)配命令行工具去完成這個(gè)日常操作。哈哈,只能略表慚愧,我居然沒(méi)有把這個(gè)這么好用的網(wǎng)站給收藏到瀏覽器的頂部欄!

正題時(shí)間戳 -> 日期

和往常一樣,我在調(diào)試的過(guò)程中發(fā)現(xiàn)了一個(gè)可疑的時(shí)間戳,它的數(shù)值是1506787200,我需要知道這個(gè)時(shí)間戳是對(duì)應(yīng)的哪個(gè)具體日期,所以我又熟練的打開(kāi)了某搜索引擎輸入了時(shí)間戳........

其實(shí)我這次是打開(kāi)了Mac系統(tǒng)終端(Terminal),然后輸入了如下命令:

date -r 1506787200

這個(gè)命令以最快的速度也給予了我準(zhǔn)確的反饋輸出:

Linux/Unix中時(shí)間和時(shí)間戳的示例分析

從這一刻起,我感覺(jué)我自己終于擺脫了我的壞習(xí)慣,所以我覺(jué)得有必要多操作幾次以達(dá)到強(qiáng)化的目的,于是我又熟練的依次輸入了如下的命令:

date -r 0
date -r 60
date -r 3600
date -r 43200
date -r 86400

這些命令如饑似渴的以最快的速度分別的給予了我準(zhǔn)確的反饋輸出:

Linux/Unix中時(shí)間和時(shí)間戳的示例分析

從這一刻起,我感覺(jué)我自己已經(jīng)熟練掌握了date -r的奧義,就在我欣喜如狂之際,我的旁光突然掃描到date -r 0這個(gè)命令的輸出: 1970年 1月 1日 星期四 08時(shí)00分00秒 CST,為什么是早上8時(shí),和我在前話中提到的0代表1970年1月1日0時(shí)0分0秒有些出入呢。

其實(shí)這是一個(gè)誤會(huì),時(shí)間戳:0確實(shí)是代表1970年1月1日0時(shí)0分0秒,但是是代表零時(shí)區(qū)(UTC+0)的1970年1月1日0時(shí)0分0秒,還好我也是學(xué)過(guò)地理的,知道我們偉大的祖國(guó)幅員遼闊,地大物博,光時(shí)區(qū)就橫跨了5個(gè),而且全國(guó)統(tǒng)一使用首都北京所在時(shí)區(qū)東八區(qū)(UTC+8)的時(shí)間。

因?yàn)槲业碾娔X系統(tǒng)設(shè)置的時(shí)區(qū)是東八區(qū)的緣故,這個(gè)date命令在默認(rèn)情況下也是根據(jù)系統(tǒng)的時(shí)區(qū)優(yōu)先顯示所在時(shí)區(qū)的換算后的本地時(shí)間。以至于出現(xiàn)剛才的情況,虛驚一場(chǎng)。

為了驗(yàn)證剛才的推論,我打算重新操作一次,并且加上了一個(gè)神秘的參數(shù)-u,這個(gè)參數(shù)的作用很簡(jiǎn)單,就是以零時(shí)區(qū)(UTC+0)為標(biāo)準(zhǔn)輸出時(shí)間,輸入的命令如下:

date -u -r 0
date -u -r 60
date -u -r 3600
date -u -r 43200
date -u -r 86400

這些命令欣慰的以最快的速度分別的給予了我預(yù)料中的反饋輸出:

Linux/Unix中時(shí)間和時(shí)間戳的示例分析

從這一刻起,雖然我感覺(jué)到我的功力再次上了一個(gè)臺(tái)階,但在這個(gè)時(shí)候我覺(jué)得我應(yīng)該稍微停頓一下我的腳步,來(lái)追憶一下往昔的時(shí)光。

很快我就進(jìn)入了狀態(tài),回想起1998年的那個(gè)夏天,7月13日的凌晨3點(diǎn),法蘭西世界杯決賽法國(guó)VS巴西,一個(gè)讓多少人睡不著覺(jué)的夜晚,但卻是我第一次嘗試在這么晚的時(shí)間或者說(shuō)那么早的時(shí)間去看一場(chǎng)足球比賽,是因?yàn)樵谶@之前我還一直是一名作息時(shí)間規(guī)律的小學(xué)生?;貞浀酱?,我覺(jué)得我應(yīng)該做點(diǎn)什么,我居然想查看一下那個(gè)快20年之前的夜晚的時(shí)間戳!

日期 -> 時(shí)間戳

于是我飛快的將這個(gè)熟悉又遙遠(yuǎn)的日期輸入到命令中:

date -j 071303001998

命令給予了一個(gè)輸出:

1998年 7月13日 星期一 03時(shí)00分00秒 CST
#法蘭西世界杯決賽開(kāi)始的北京時(shí)間

上面的命令中,我輸入的是date -j 071303001998,其中的-j參數(shù)代表的是不要將他后面的那個(gè)日期字符串設(shè)置為當(dāng)前系統(tǒng)時(shí)間,而只是將它以更友好的1998年 7月13日 星期一 03時(shí)00分00秒 CST這種形式輸出。簡(jiǎn)單點(diǎn)說(shuō)也就是如果我不加-j參數(shù),那么date 071303001998命令會(huì)直接把我的電腦系統(tǒng)的當(dāng)前時(shí)間設(shè)置為1998年那個(gè)夏天的7月13日凌晨3點(diǎn),而不是在屏幕上輸出那個(gè)時(shí)間。

但是我提供的071303001998這個(gè)字符串其實(shí)就是月日時(shí)分年的格式,07是7月,13是13日,03是凌晨3點(diǎn),00是0分,1998是什么還用說(shuō)么,我知道準(zhǔn)確的日期,然后輸入到這個(gè)date -j 071303001998命令中,顯然不是為了讓它輸出告訴我1998年 7月13日 星期一 03時(shí)00分00秒 CST這個(gè)只是更好讀的同樣的日期,我是出于強(qiáng)烈的好奇想要知道這個(gè)偉大的時(shí)間的時(shí)間戳,所以我必須還要?jiǎng)狱c(diǎn)手腳:

date -j 071303001998 +%s

這次的命令只輸出了一個(gè)數(shù)字,這個(gè)數(shù)字就是我想知道的那個(gè)時(shí)間戳:

900270000

得到了時(shí)間戳,我又迫不及待的使用如下命令:

date -r 900270000

命令再一次的快速輸出了:

1998年 7月13日 星期一 03時(shí)00分00秒 CST

經(jīng)過(guò)這一些列的操作,我不光學(xué)習(xí)到了新的參數(shù)-j,還再次溫故了-r參數(shù)的用法,更重要的是我完成了對(duì)過(guò)往美好時(shí)光的追憶,可謂一石三鳥(niǎo),大快人心。

格式化

前面的命令雖然用得很溜了,但是它們的輸出都略顯冗長(zhǎng),雖然很智能的根據(jù)我是中文用戶給予了中文輸出的最高待遇,但我覺(jué)得很普通~ 我現(xiàn)在迫切的希望改變它的輸出的格式以彰顯我獨(dú)特的個(gè)性與品味,于是我又開(kāi)始了我的操作,我現(xiàn)在顯然還沉浸在剛在的追憶中,所以我還是打算用900270000這個(gè)代表1998年夏天的7月13日凌晨3點(diǎn)整的這個(gè)有特殊意義的時(shí)間戳來(lái)完成我的操作:

date -r 900270000 +%Y

它給予了我一個(gè)簡(jiǎn)單輸出作為回應(yīng):

1998

我有些小激動(dòng),仿佛找到一些竅門(mén),繼續(xù)輸入:

date -r 900270000 +%m

它再次給予了我一個(gè)更簡(jiǎn)潔的回應(yīng):

07

我更加激動(dòng),毫不猶豫的輸入:

date -r 900270000 +%d

它果然沒(méi)有讓我失望,給予了我預(yù)料中的回應(yīng):

13

經(jīng)過(guò)三次嘗試,我嘗到了成功的滋味,我覺(jué)得這個(gè)時(shí)候應(yīng)該乘勝追擊,于是我決定將%Y,%m,%d放在一起,我的第六感告訴我,我會(huì)再次獲得成功:

date -r 900270000 +%Y%m%d

結(jié)果顯而易見(jiàn),年月日一起出現(xiàn)在了屏幕上:

19980713

我還不滿足,我想獲取更多的成就感,我想輸出的格式更加的國(guó)際化,我繼續(xù)嘗試:

date -r 900270000 +%m/%d/%Y

結(jié)果達(dá)到我的初步要求:

07/13/1998

我依然不滿足,因?yàn)槲蚁肫鹆送醴坪湍怯⑺哪鞘准t遍大江南北的歌曲《相約98》,我覺(jué)得我也要顯示98而不是1998,在那個(gè)年代,沒(méi)有人會(huì)說(shuō)1998年,所以我再次摸索并嘗試:

date -r 900270000 +%m/%d/%y

大寫(xiě)變小寫(xiě),腐朽化神奇:

07/13/98

我果然還是不滿足,心里想著如果能在后面附加上具體的時(shí)間那我應(yīng)該就會(huì)收手了,于是我又一氣呵成的輸入了如下命令:

date -r 900270000 +%m/%d/%y %H:%M:%S

心里想著就快完成這次愉快的操作之旅時(shí),現(xiàn)實(shí)卻讓我嘗到了失敗的味道:

date: illegal time format

在最后關(guān)頭居然發(fā)生了意外著實(shí)讓我有些不太爽快,但是憑借我大學(xué)英語(yǔ)四級(jí)的扎實(shí)基礎(chǔ),我還是從報(bào)錯(cuò)信息中領(lǐng)悟出了一些端倪,再結(jié)合我多年的工作經(jīng)驗(yàn),我感覺(jué)應(yīng)該是我新增加的那段為了輸出時(shí)分秒的格式字符串%H:%M:%S所造成的。我隱約感覺(jué)到應(yīng)該是它之前的那個(gè)空格導(dǎo)致了date命令在讀取的時(shí)候誤以為它們是兩個(gè)獨(dú)立的字符串。這種時(shí)候,按照慣例應(yīng)該需要用傳說(shuō)中的雙引號(hào)""將它們包圍在一起,以表示它們是一個(gè)整體。于是我重新整理了命令:

date -r 900270000 "+%m/%d/%y %H:%M:%S"

這次終于可以收工了,完美的輸出,完美的夜晚,再也回去不的98:

07/13/98 03:00:00

做個(gè)總結(jié)常用命令行 date

默認(rèn)格式輸出當(dāng)前日期。 date +%Y%m%d%H%M%S

自定義格式%Y%m%d%H%M%S輸出當(dāng)前日期 date -r 900270000

默認(rèn)格式輸出時(shí)間戳:900270000對(duì)應(yīng)日期 date -r 900270000 +%Y%m%d%H%M%S

自定義格式%Y%m%d%H%M%S輸出時(shí)間戳:900270000對(duì)應(yīng)日期 date -j 071303001998

默認(rèn)格式輸出日期字符串:071303001998對(duì)應(yīng)的日期 date -j 071303001998 +%Y%m%d%H%M%S

自定義格式%Y%m%d%H%M%S輸出日期字符串:071303001998對(duì)應(yīng)的日期 date -j 071303001998 +%s

自定義格式%s輸出日期字符串:071303001998對(duì)應(yīng)的日期的時(shí)間戳 格式字符串含義

注意大小寫(xiě)代表完全不同的含義

%Y : 年(Year) %y : 年(year)后兩位 %m : 月(month) %d : 日(day) %H : 時(shí)(Hour) %M : 分(Minute) %S : 秒(Second) %s : 時(shí)間戳(stamp) 日期字符串默認(rèn)格式

月日時(shí)分年(07 13 03 00 1998)

那些逝去的時(shí)間戳900270000 1157040000 967737600 778348800 555087600 1430136000 1461758400 1493222400 1277913600

以上是“Linux/Unix中時(shí)間和時(shí)間戳的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)頁(yè)題目:Linux/Unix中時(shí)間和時(shí)間戳的示例分析-創(chuàng)新互聯(lián)
轉(zhuǎn)載來(lái)于:http://weahome.cn/article/shihs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部