想穿越,時間戳打好了嗎?

2021-02-20 中興文檔
前幾天,當我在寫通信科普文章的時候,突然有一種時空錯亂的感覺,恍惚間感覺這個場景十分熟悉,好像在不久之前,同樣的電腦,同樣的微風拂面,同樣的我,做著同樣的事情。在另外的一個時空中還有一個你,他經歷過相同的事情,於是這種熟悉感就會傳遞給你。

但是彰顯這個世界,是一個虛假世界的Bug,卻不斷的在我們身邊出現:

為什麼會有這麼多的證據,表明我們穿越到了1970年1月1日,這個日子有什麼特殊的嗎?

然後我們來看一下這個日期:1970.1.1,好像沒有什麼特別的啊?如果說宇宙大爆炸代表了宇宙的誕生起點,那麼1970.1.1就代表著計算機的誕生時間點。

是不是感覺很奇特,現在我們隨處可見的計算機、智慧型手機,竟然才誕生50年!從來沒有一個事物可以發展的如此迅速,並如此劇烈得改變人類的生活。1969年8月,貝爾實驗室程式設計師肯.湯普遜耗時一個月,開發出了Unix的第一個版本。他估計也想不到,這個B語言開發的全新作業系統,會產生如此深遠的影響。儘管Unix一出世就得到了大家的肯定,但是肯.湯普遜並沒有滿足,他又和同事丹尼斯裡奇一起改進了B語言,開發出C語言,並重寫了Unix,新版本於1971年發布。同年,《Unix Programmer's Manual》出版,將格林威治時間(GMT)1971年1月1日0時0分0秒作為作業系統的起始時間。現今的計算機系統,或多或少受Unix的影響,延續Unix的計時方式。格林威治時間(GMT)1970年1月1日0時0分0秒從此成為Unix世界的起始時間,甚至超越Unix成為整個計算機世界的起始時間。Unix中常常使用一個數字記錄時間,即Unix紀元時間(格林威治時間1970年1月1日00:00:00)到當前時間的秒數。(根據系統的精度,時間單位有時為毫秒,有時為納秒)。大於0表示在起始時間之後,小於0表示在起始時間之前。這個數字有時是浮點類型、有時是整數類型,統一稱為時間戳(Timestamp)。一開始的Unix都是32位的,所以時間戳的取值範圍為-2147483648(231) ~ 2147483647(231-1),不過一般我們認為計算機不會在1970年前使用,所以使用的是時間戳的正整數,即最大值為2147483647(231-1)。最初Unix的規定是:時間戳每變化一次,就表示時間經過了1/60秒。比如時間戳取值為3600,表示以格林威治時間1970年1月1日00:00:00為起點,經過了3600x1/60秒= 60秒,那現在的時間就是1970年01月01日00時01分00秒。人們很快就發現了問題:一個時間戳代表1/60秒的話,2147483647x(1/60秒)/(24小時x60分鐘x60秒)=414.3天,也就是說只需要400多天,時間戳就全用完了。

設計出一個只能使用400多天的作業系統,顯然不是大家的願望。於是Unix修改了規定:時間戳每變化一次,就表示時間經過了1秒。這個規定延續到現在,還在使用。比如時間戳取值為3600,表示以格林威治時間1970年1月1日00:00:00為起點,經過了3600秒,那現在的時間就是1970年01月01日01時00分00秒。從1/60秒擴大到1秒,作業系統的時間也從400多天擴展到了68年,雖然時間上仍然不多,但對於當時的人們來說,已經是足夠使用的了。看著這裡,你是不是不禁要問,1970+68豈不是2038年,這不也快到了嗎?難道到時候再修改規定?

沒錯,32位時間戳能代表的最長時間是68年,到2038年01月19日03時14分07秒,便會到達最大時間。過了這個時間點,所有32位作業系統時間便會變為 10000000 00000000 00000000 00000000,也就是1901年12月13日20時45分52秒,會出現時間回歸的現象,很多軟體便會運行異常了。當初Unix使用的是32位,導致時間戳的取值有限。而現在大部分的計算機,都是64位的了。時間戳的取值範圍擴大為-9223372036854775808(263) ~ 9223372036854775807(263-1)。換算成時間的話,64位的時間戳,可以覆蓋了1970年前2000多億年,後2000多億年,絕對夠用到宇宙的盡頭了。

原來如此,那到底為什麼有些應用程式中會顯示1970.1.1呢?我們日常使用的各種應用程式,都是構建在作業系統上的。當需要展示時間時,應用程式都要從作業系統中獲取時間戳的取值。所以,1970.1.1的出現,最大的可能就是應用程式在獲取時間戳的時候,出現了Bug。

應用程式使用了不恰當的數值、或者無法獲取系統時間戳的時候,就只能使用時間戳的默認取值。而在計算機中,時間戳的默認值通常是0。時間戳為0,表示時間為(GMT)1970年1月1日0時0分0秒。中國使用北京時間,處於東8區,相應就是早上8點。因此在中國,時間戳出錯了,就經常會顯示為1970年1月1日08:00。再遇到1970.1.1的時候,就可以會心一笑:這個應用程式肯定出現Bug,沒法獲取到正確的時間戳了。應用程式獲取時間戳時出現錯誤,最多就是顯示了錯誤的時間。未來的時光機,還構造在計算機作業系統上的話,想要穿越時空,就必須以紀元時間為坐標,設置要穿越的時間點,即設置正確的時間戳。

時光機的設計者或者說是程式設計師們,一定要打好時間戳哦:用了32位的時間戳,就只能回到1902年11月25日~2038年01月19之間;用了64位的時間戳,那就隨意了,1970年的前後共4000億年的時空,足夠你任意翱翔了!注意:穿越到1970年1月1日之前時,一定要把時間戳設置為負數。

那麼,各位小夥伴們,你們有沒有遇到過Bug呢?

不管是應用程式的Bug,還是現實世界的Bug,歡迎分享哦~

我們是一群平均從業年限5+的通信專業工程師。

關注我們,帶你了解通信世界的精彩!

你點的每個在看,我都認真當成了喜歡

相關焦點

  • 薩古魯:時間穿越有可能嗎?
    如果時間是相對的,我們可以時間穿越嗎?薩古魯回答:過去、現在和將來不是三個不同的地理位置,而是全部發生。他描述了空間、時間和重力之間的關係,以及它們對靈性進程的重要性。 Questioner: If time is relative can wetime-travel?發問者:如果時間是相對的,我們可以時間穿越嗎?
  • 時空穿越可以實現嗎?理論能蟲洞穿越,時間膨脹法穿越
    近日有許多關於時空穿越的影視劇作品呈現在觀眾面前,面對這些穿越情節,人們不禁發問,時空穿越可以實現嗎?怎樣做到時空穿越?這確實一個讓人深思的問題,下面小編將會從科學的角度帶大家了解一下答案。
  • 了解一下,航天「時間戳」是個啥東東?
    趕緊補課!時間戳(timestamp),是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數。通俗地講,時間戳是一個能表示一份數據在某個特定時間之前已經存在的、完整的、可驗證的數據。它的提出主要是為用戶提供一份電子證據,以證明用戶的某些數據的產生時間。
  • 瀏覽器中轉換時間戳
    在一些網站或者數據中常常能見到時間戳的時間數據,例如「1566199627349」,它代表的是2019年8月19日15點25分45秒349微秒(GMT+8時區)。那怎麼快速的從時間戳轉換到我們看得懂的時間,很簡單,只需要一步。
  • 穿越到古代和愛豆談起了戀愛?甜寵穿越劇《哦!我的皇帝陛下》可以...
    >女主都這麼明顯的暗示了,男主的腦迴路是有這__________麼長才聽不懂的嗎?暗戳戳的拉過女主的小手牽著好甜啊看著喝了酒冒點嬌憨氣的女主,宸王殿下不自覺的露出了寵溺笑容~>護妻能力五顆星的宸王傳說中不近女色的高冷王爺面對女主一點都不高冷,這種一言不合就送禮的王爺來一打好嗎
  • 想知道就戳這裡吧!
    想知道就戳這裡吧!時間:2018-09-10 15:59   來源:7230   責任編輯:沫朵 川北在線核心提示:原標題:文明大爆炸胡椒怎麼得? 想知道就戳這裡吧!想知道就戳這裡吧!   在文明大爆炸遊戲中胡椒是勝利後所獲得的奢侈品,可以增長國民歡樂度,那麼要怎麼獲得胡椒呢,一起來看看吧~
  • 星際穿越好看嗎 所有導演都在解決時間問題
    星際穿越好看嗎 所有導演都在解決時間問題時間:2016-06-03 21:51   來源:豆瓣網   責任編輯:毛青青 川北在線核心提示:在女作家的筆觸下,人類的生命時間是這樣的:我生的時候,祖父已經六十多歲了,我長到四五歲,祖父就快七十了。我還沒有長到二十歲,祖父就七八十了。祖父一過了八十,祖父就死了。
  • CF刀戰技巧 穿越火線玩刀其實不難
    本文概述:CF刀戰技巧詳解 CF怎麼玩刀 CF穿越火線玩刀技巧在CF裡刀的威力想必大家都領略過把。威力相比與AKAWM的威力。瞄著頭一刀一個就算是不死也殘廢了重刀上半身威力=90其他地方威力=45-55之間。
  • 想穿越到古代嗎?有個人在那裡等你做伴
    穿越是一個令人心動而美好的話題,古代美女俊男那麼多,現在自己有事博士級水平的帥男大美女,穿越到古代,還不得把古人們給驚豔死,弄個王妃做做,搞個皇帝噹噹,那可不是一般的過把癮。真是想想吧,嘴上就流口水了,這可比做美夢現實的多了享受的多了。
  • 《最強蝸牛》生孩子攻略 想知道怎麼生孩子戳這裡
    《最強蝸牛》生孩子攻略 想知道怎麼生孩子戳這裡時間:2020-06-23 19:29   來源:遊俠網   責任編輯:沫朵 川北在線核心提示:原標題:《最強蝸牛》生孩子攻略 想知道怎麼生孩子戳這裡 最強蝸牛怎麼生孩子?在最強蝸牛中,有各種各樣有趣的設定,很多玩家想知道怎麼生孩子?
  • 如果穿越古代,你就是攜帶病毒的生化死神嗎?
    現代小哥哥們紛紛穿越到古代 比如前段時間流行的 如果現代人穿越到古代 當然穿越分「魂穿」和「肉身穿越」 像《慶餘年》範閒這樣「魂穿」 影響可能小一些 如果是《唐磚》中的「肉身穿越」
  • 時間穿越可行嗎?霍金說不存在,可實際上這2種方法可行
    時間穿越可行嗎?霍金說不存在,可實際上這2種方法可行!如果你能回到過去或者去到未來,你最想做的事情是什麼呢?人類一直都夢想著能穿越時間,但時間穿越真的存在嗎?霍金認為,如果真的可以時間穿越,那2010年6月28日收到請柬的人就會回到2009年6月28日來參加這場宴會。而事實是宴會當天沒有一個嘉賓到場參加。
  • 超光速能讓人回到過去,卻無法改變一切,你還想穿越嗎?
    超光速能讓人回到過去,卻無法改變一切,你還想穿越嗎?曾幾何時人們對穿越的話題十分感興趣,很多人在現實的生活中過得不如意,幻想能夠像穿越劇中的男主角或者女主角那樣回到古代去冒險一番,或許還能夠過上好日子。
  • 時間穿越能實現嗎?專家找到3種方法,霍金卻警告別回到過去!
    時間穿越能實現嗎?專家找到3種方法,霍金卻警告別回到過去!人類是三維空間中的生物,可以沿著維度前進和後退,無需受到限制,想做任何事都可以隨心所欲。在霍金生前,對時間有過自己獨到的見解,在他的認知中,時間完全可以穿越,時間穿越是有方向性的,只能朝著未來穿越,無法逆流。這種逆轉會打破因果關係,俗話說得好有因才有果,這種順序是無法顛倒的。雖然霍金提示過人類有機會實現穿越,他認為這種方式是不可逆轉的,穿越到過去有可能會出現悖論。
  • 如果時間可以穿越你是想去過去,還是未來?
    「時間穿越」幾乎是一個永恆經典的話題。從古到今無數的人們都曾經有過這樣的幻想。儘管這聽上去有些荒誕,但美國一家名為時間旅行基金的公司宣稱他們有一套嚴謹的理論已經證明了時間旅行的可行性。按照這家公司的說法,時間旅行。
  • 科學上 真能穿越嗎?看完秒懂-穿越,時空旅行,時間旅行,科學,天文...
    穿越,始終是一個經久不衰的話題。雖然這段時間沒有以前流行穿越劇時間段那麼火了,但是,討論的人依舊還有很多。有不少人始終堅信:穿越是真實存在的物理現象,你看當初愛因斯坦愛大叔,不就是證明了一個「蟲洞」存在嗎?
  • 《最強蝸牛》回歸活動禮包購買攻略 想知道回歸活動禮包怎麼購買戳...
    《最強蝸牛》回歸活動禮包購買攻略 想知道回歸活動禮包怎麼購買戳這裡時間:2020-11-23 16:44   來源:遊俠網   責任編輯:沫朵 川北在線核心提示:原標題:《最強蝸牛》回歸活動禮包購買攻略 想知道回歸活動禮包怎麼購買戳這裡 最強蝸牛回歸活動禮包怎麼購買?
  • 穿越火線打爆破死得快?除了AC你還需要這些裝備!
    穿越火線打爆破都需要哪些東西做準備?爆破模式作為穿越火線的一大特色,一直深受廣大玩家所喜愛。而爆破模式的高超技術不僅僅體現著對遊戲力的統治,也是對於遊戲玩家能夠肩挑以寡敵眾大任的最好的詮釋。只是…莫非真以為有技術、有意識就能打好爆破了嗎?天真!在絕對的武器裝備優勢面前,能夠彌補的可不是一點半點的差距。想打好爆破,下面這些是必備。一、首先,熟悉地圖。爆破玩的多的圖一般是沙漠灰、新年廣場與黑色城鎮,再複雜一點是供電所與鷹眼、潛艇等。
  • 如果四維空間能夠自由地穿越時空,你會想看看過去和未來嗎?
    讀完後,我們每個人都可能想進去。 這是因為科學家認為四維空間可能沒有時間概念,五維空間也可能沒有空間概念,這意味著如果人類進入四維空間
  • 愛因斯坦說時間是可以穿越的,但我們為什麼沒見過來自未來的人?
    ,或者前往到未來,你想去做什麼?如果還能操控時間,利用時光機隨時隨地穿越時空,你能想像自己將會開啟怎樣的一段時空之旅嗎?你會去見證奇蹟嗎?還是想去改變歷史走向呢?是想看看過去的人和他們的生活,還是希望去糾正一些錯誤呢?你有想過自己可能碰巧阻止了一場戰爭嗎?你願意從未來帶回治癒絕症的藥物嗎?——好奇喵時間穿越可能實現嗎?關於能否穿越時間的問題,科學家已經爭論了數個世紀。