亚洲欧美日韩国产成人|亚洲中文字幕无码中字|HEYZO在线无码综合|久久久不卡精品国产一区二|久久精品亚洲无中文东京热|中文字幕乱码一区三区免费|亚洲国产欧美在线观看片不卡|国产精品久久一区二区三区97

深度揭秘(代碼time)代碼修改時間怎么改,代碼中的時間,nx500打印機驅動,

保健品 nanfang 2023-12-26 04:26 111 0

1.更改時間代碼

在國際化應用中,對日期/時間的處理遠比你想象中的更難,特別是當涉及到時區(qū)的時候為什么會這么難?我們該如何解決它?請聽我為你一一解析幾乎所有的系統(tǒng)都離不開“時間”的概念,以至于大多數(shù)語言(及其默認庫)都定義了日期/時間等類型。

2.代碼時間格式

但是,我們?nèi)粘Kf的“時間”這個詞實際上包含了多個相似卻有微妙差異的概念如果不能分清它們,會給你的開發(fā)工作帶來很多煩惱基本概念時區(qū)(Timezone)在應用濃綠的拼音怎么寫系統(tǒng)中,對時間的混淆往往和時區(qū)有關這是很多系統(tǒng)從本地化應用發(fā)展成全球化應用時的一大障礙。

3.一鍵更改修改時間和日期代碼

由于各地日出日落的時刻不同,所以全球一共分為 24 個時區(qū),每個時區(qū)橫跨 360/24=15 個經(jīng)度比如倫敦位于北京的西面,那么當北京的太陽已經(jīng)升起的時候,倫敦還要再過 8 小時才能迎來黎明也就是說,倫敦比北京晚 8 小時。

4.代碼時間超限怎么辦

而東京位于北京的東面,所以東京的日出比北京早 1 小時如果我們想知道當北京是中午 12:00 的時候,東京是什么時間,可以先用 12:00 減去當前時區(qū) +08:00,換算成倫敦時間 04:00,再加上目標時區(qū) +09:00,就得到了東濃綠的拼音怎么寫京時間 13:00。

5.顯示時間代碼

零時區(qū)地球是圓的,北京比倫敦早8小時其實就等于比倫敦晚16小時,到底誰比誰早呢?我們既可以把這個時差表示為+8,也可以表示為-16,到底該怎么寫呢?我們要先確定一個標準首先,要確定一個零時區(qū)雖然任何一個地方都可以作為零時區(qū),但擁有世界上第一座航海鐘的英國格林威治天文臺奪得了這項殊榮,而經(jīng)過那里的子午線(經(jīng)線),被稱為本初子午線。

6.代碼時間轉換

它左右各7.5度的范圍叫做零時區(qū),再往西一個時區(qū)就叫做西一區(qū)當我們自東往西旅行的時候,是在追著太陽走,因此每過一個時區(qū),就要把表撥慢一個小時才能跟當?shù)貢r間保持一致,我們把這個“撥慢”的動作,記作 -01:00,反之則是濃綠的拼音怎么寫 +01:00。

7.更改時間指令

如果從倫敦往北京走,需要從西往東走八個時區(qū),因此北京的時區(qū)就記作 +08:00日界線(國際日期變更線)在球面上,與它相對的那條子午線,正好是 +12:00 區(qū)和 -12:00 區(qū)的分界線這條線很特殊,因為當你自西向東越過它的時候,既是比倫敦早了13小時,從另一個方向來看,也是比倫敦晚了11小時。

8.代碼時間怎么設置

就像數(shù)學中的進位一樣,它們的日期應該是不同的當自西向東越過日界線的時候(迎著朝陽),日期應該減一,反之(追趕夕陽),則應該加一假設有一個人于中午 12:00 坐飛機從倫敦出發(fā),自東向西(追著太陽)做環(huán)球旅行。

9.日期時間代碼

以這架飛機的速度,恰好每小時濃綠的拼音怎么寫飛過一個時區(qū),于是,每過一個小時,他都要把表撥慢一個小時(-01:00)換句話說,我們的主人公一直生活在中午 12:00,而太陽也確實一直在他的頭頂,他的感知時間和表上的時間是一致的,這樣就避免了他頂著大太陽說“現(xiàn)在是午夜”的荒謬感。

10.調(diào)整代碼

但是,當他到達日界線的時候,還要做另一件事由于他是在自東向西穿越日界線,所以他還要把日期加一他繼續(xù)向前,等回到倫敦走下飛機的時候,他表上的時間是第二天中午 12:00,而當?shù)貢r間也恰好是第二天的 12:00,他自己恰好在天上飛了一整天。

這樣,所有的時間就都對上了但是如果我們仔細看時區(qū)表,就會發(fā)現(xiàn)有些時區(qū)被標記為+13:00、+14:00,這是怎么回事濃綠的拼音怎么寫呢?還是因為日界線因為雖然日界線大部分位于海上,但還是會穿過有人生活的陸地如果把同一個地方的人劃分到不同的日期,會帶來很多不便,于是日界線在中間拐了幾個彎,而這些拐彎的地方,自然就出現(xiàn)了像 +13:00、+14:00 這樣的怪異時區(qū)。

夏時制一到夏天,白天就變得很長,特別是高緯度地區(qū)會更明顯,到了北極或南極,太陽整天都不會落下去,這就是極晝?yōu)榱顺浞掷么笞匀坏酿佡?,有些地方會實行夏時制,也就是說到了夏天,就人為把表撥快一個小時,讓人們早點起床、早點睡覺,這樣可以節(jié)省一些照明的電費。

中國曾經(jīng)短暫實行過幾年夏時制,不過后來認為它帶來的負面影響超過收益,就取消了但是世界上仍然有很多地方實施夏時制,當設濃綠的拼音怎么寫計全球化應用的時候,必須得考慮它時刻(Instant)也許你意識到了,當倫敦是中午十二點時(太陽正當空),位于倫敦西面的巴黎應該是下午一點(太陽略偏西)。

但實際上它們指的是一定是同一個時間想象一下,如果我中午十二點從倫敦給巴黎的朋友打一個電話,他接電話時手機上顯示的應該是下午一點但無論是倫敦的中午十二點,還是巴黎的下午一點,都只是同一個客觀時間的兩種不同表示而已。

這個與時區(qū)無關的客觀時間,我們稱之為“時刻”事實上,在大部分場景下,我們應該關注的都是這個時刻,而其它的時間,全都作為它的衍生物或等價物用這種客觀時刻作為記錄時唯一的一種時間,可以避免很多的概念混淆GMT —— 格林威治標準時間

自從確濃綠的拼音怎么寫定了時區(qū)之后,國際上就把格林威治時間記作 GMT+0對于同一個時刻,可以有 12:00 GMT+00:00、13:00 GMT+01:00 等多種等價的表示形式UTC —— 協(xié)調(diào)世界時現(xiàn)代科技對時間精度的要求越來越高,GMT 依靠天文觀測(地球自轉)得來的時間已經(jīng)遠遠不能滿足現(xiàn)代科技的精度要求。

于是人們改用原子鐘來實現(xiàn)高精度計時,但是 GMT 已經(jīng)有了很多歷史應用,直接把它替換成原子鐘計時會帶來一些不兼容問題所以,人們創(chuàng)建了 UTC 時間,以便在新應用中代替 GMT由于 UTC 不再依靠天文觀測來獲取,所以地球自轉一天的時間也不再一定等于 86400 秒。

如果地球自轉稍微慢了一丟丟呢?那一天的濃綠的拼音怎么寫最后一分鐘可能就有 61 秒,這叫做閏秒事實上,由于潮汐作用,地球的自轉確實一直在微不可查地減速所以,如果在某些系統(tǒng)中看到 23:59:60 這樣的表示法,請不要急著喊 BUG,先看看當時的新聞上有沒有發(fā)過閏秒公告。

當然,為了減少不必要的換算,UTC 在設計的時候刻意向 GMT 看齊,在絕大部分場景下,兩者沒有值得注意的差別日歷我們時常提到日期,但實際上并沒有一個叫做日期的獨立概念所有的日期,其實都是在某個日歷系統(tǒng)中的日期。

比如說我們既可以用“1911 年 10 月 10 日”表示發(fā)生辛亥革命的日期,也可以用“宣統(tǒng)三年八月十九”表示這兩個都對所以,當我們要把一個時間顯示給用戶的時候,其日期部分濃綠的拼音怎么寫必須指定一個日歷才能正確地格式化。

我們?nèi)粘J褂玫哪J日歷系統(tǒng),都是指格里高利日歷系統(tǒng),由于采納它的國家最多,因此也被稱為公歷而中國的傳統(tǒng)歷法叫做農(nóng)歷或陰歷類似的,還有伊斯蘭歷和佛教歷等日歷系統(tǒng)而年、月、日、星期等,也都是與特定日歷系統(tǒng)緊密相關的概念。

所以,一旦遇到“下個月”、“第 2 周”這樣的概念,先要明白它是指公歷系統(tǒng)中的一些語言或其默認庫中把日期的概念綁死在了公歷系統(tǒng)上,比如 Java 的 Date 類,這會導致它在國際化時難以適應不同的日歷系統(tǒng),容易引起混淆。

所以 Date 類的一些方法和屬性被棄用,并在 Java 8 中引入了一些新的時間/日期類時間的表示格式無論使用哪種時間/日期系濃綠的拼音怎么寫統(tǒng),也無論它們寫成什么格式,背后所代表的都是時刻這點差異非常重要,如果混淆了它們,在設計國際化應用時,就會陷入歧義。

Unix 時間戳(Time stamp)當 Unix 系統(tǒng)誕生的時候,需要一種數(shù)據(jù)結構來表示時間,在計算機系統(tǒng)資源非常有限的條件下,系統(tǒng)的設計師選擇使用 32 位整數(shù)來表示時間,并以 UTC 時間的 1970年1月1日0時0分0秒 作為起點。

隨著 Unix 和 Linux 系統(tǒng)的廣泛流行,這種表示法的使用范圍也越來越廣然而,由于它是 32 位整數(shù),因此它最多只能表示到 2038 年初不過,在新系統(tǒng)中,已經(jīng)改用 64 位整數(shù)表示時間戳,它可以表示到2900億年之后,相當于不存在最大濃綠的拼音怎么寫時間限制了。

但考慮到存在很多遺留系統(tǒng),這種遷移將是一個巨大的工程除了兼容性問題之外,Unix 時間戳在調(diào)試、追蹤方面也很不友好,你很難一眼看出它是什么時間,所以,在 API 和日志中盡量不要再用這種格式傳輸或存儲時間數(shù)據(jù)。

RFC2822在互聯(lián)網(wǎng)協(xié)議中傳輸?shù)淖址?,通常?RFC2822 格式的比如 Thu, 10 Dec 2020 13:49:45 GMT這種形式雖然冗長,但不存在精度限制,所以在一些對存儲空間不很敏感、但注重可讀性的場合卻很合適。

不過,這種格式涉及一點英語,這對非英語國家的人不太友好因此雖然對開發(fā)和調(diào)試的影響不大,但在國際化應用中最好不要把它直接顯示給最終用戶ISO8601 濃綠的拼音怎么寫/ RFC3339另一種常用的字符串表示法是 ISO8601 格式,比如 2020-12-01T00:49:45.001Z。

ISO8601 包含很多種子格式事實上,中國使用的日期格式標準就是 ISO8601,但我們?nèi)粘V饕褂闷洹澳?月-日”部分從名字就可以看出,它是一個 ISO 標準,幾乎所有的現(xiàn)代語言和庫都能很好地支持它,不會造成歧義。

而且,它只會使用阿拉伯數(shù)字和兩個字母,以及幾個可選的分隔符,對于非英語用戶比較友好在互聯(lián)網(wǎng)領域,定義了另一個與 ISO8601 基本兼容的標準 RFC3339,也就是“{年}-{月}-{日}T{時}:{分}:{秒}.{毫秒}{時區(qū)}”格式,其中的年要用零補齊濃綠的拼音怎么寫為4位,月日時分秒則補齊為2位。

毫秒部分是可選的最后一部分是時區(qū),前面例子中的 Z 其實是零時區(qū) Zulu 的縮寫,它也可能是 +08:00 或 -08:00 等這兩個標準非常相似,但又不完全兼容,在編程語境下常用的 ISO8601,指的是一個像 RFC3339 一樣五臟俱全的子版本。

也就是前面舉例過的 2020-12-01T00:49:45.001Z 這種形式人類可讀格式(Human-readable)雖然我們已經(jīng)有了很多種存儲格式,但人類用戶的需求是多樣的,比如有時候用戶只希望看到“月-日”或時間中的其它部分,甚至還有“剛剛、五分鐘前、上月”等“人類友好格式”,這些信息顯然是不全的,而且很濃綠的拼音怎么寫不規(guī)范,無法作為存儲格式使用。

他們存在的意義,就在于供人類閱讀還有另一種容易混淆的人類可讀格式,比如 2020-12-01 00:49:45.001,為什么說它是人類可讀格式而不是 ISO8601 呢?問題的關鍵不在于它少一個 T,而在于它丟了時區(qū)信息!這樣一來,當我把這個時間給一位倫敦同學看的時候,我們默認都會把它當做本地時間,看似一樣,但實際的時刻差了足足八小時,什么事都耽誤了!

與時間有關的編程要點只存儲時刻Unix 時間戳、RFC2822 和 ISO8601 存儲的都是時刻,而人類可讀格式卻非如此,因為它通常會缺少至關重要的時區(qū)信息所以,不要在數(shù)據(jù)庫中存儲人類可讀格式,而應該存儲時刻,否濃綠的拼音怎么寫則會丟失信息。

只有在把時間顯示給人類的時候,才應該臨時轉換成人類可讀格式只傳輸時刻在 API 中,我們只應該傳輸時刻因為 API 的提供者和消費者很可能不在同一個時區(qū),如果傳輸缺少時區(qū)的人類可讀格式,就會被解釋為各自時區(qū)的時間,從而帶來歧義。

正確設置服務器時刻在服務器的內(nèi)部,存儲時刻通常使用 Unix 時間戳,這意味著它是 UTC 時刻當你要在服務器上設置時間的時候,通常會輸入本地時間,并且由服務器內(nèi)部換算為時刻后生效這就要求服務器上必須正確設置了你輸入的本地時間所對應的時區(qū),否則換算時就會出錯,讓服務器所理解的時刻不同于你期望的時刻,從而導致錯誤。

如果你使用遠程登錄的方式去管理服務器,可以把濃綠的拼音怎么寫當前會話的時區(qū)臨時設置為你所在的時區(qū),這樣你就可以自由輸入本地時間了,服務器會自動幫你換算當然,如果你要以另一個時區(qū)的用戶身份在服務器上查詢,也可以把當前會話的時區(qū)設置為該用戶的時區(qū),這樣你就可以自由使用該用戶期望的時間了。

也可以采用另一種方案:把服務器設置為零時區(qū),并且每次會話時不再設置時區(qū)這樣可以防止遺忘,但你就要自己把本地時間換算到零時區(qū)時間才能在服務器上輸入了比如你要查詢北京時間今天 00:0012:00 的日志,當在服務器上做維護的時候就要換算成服務器上(零時區(qū))的時間也就是昨天16:00今天4:00。

這兩種方案各有利弊,但無論采用哪種方案,都要記住時區(qū)只是表象,真實時刻才是根本必須濃綠的拼音怎么寫確保所有服務器上的真實時刻保持一致,這樣才會記錄一個唯一的“真相”,以保持數(shù)據(jù)的一致性比如,如果服務器設置為零時區(qū),輸入的時間時卻是你的本地時間,顯然會導致錯誤。

讓各個節(jié)點的真實時刻保持一致并不容易不過好在互聯(lián)網(wǎng)建立之初就設計了一個協(xié)議:網(wǎng)絡時間協(xié)議 NTP它可以幫助各個網(wǎng)絡節(jié)點自動同步其真實時刻,在互聯(lián)網(wǎng)上大部分區(qū)域,其同步精度可以達到 1~50 毫秒最好讓上下游服務器的時區(qū)保持一致

無論采用哪種方案,都最好確保上下游服務器之間的時區(qū)保持一致,特別是應用服務器與相應的數(shù)據(jù)庫服務器比如應用服務器和數(shù)據(jù)庫服務器如果分別設置成了本地時區(qū)和零時區(qū),并且在應用服務器上發(fā)送一條 SQL,以查詢 2020-濃綠的拼音怎么寫01-01 和 2020-01-02 之間的數(shù)據(jù),那么這個時刻到底指的是什么呢?應用服務器以為它在查本地時區(qū)的,而數(shù)據(jù)庫服務器以為它要查零時區(qū)的,這顯然是錯誤的。

在保存數(shù)據(jù)的時候,這種問題更嚴重如果一個表中某些時間字段是由應用服務器填寫的,而另一些字段是由數(shù)據(jù)庫服務器填寫的,那么這種時區(qū)設置方面的差異就可能帶來災難性的錯誤為了防范這種問題,最簡單的辦法是讓這些服務器的時區(qū)保持一致。

如果無法保持一致該怎么辦呢?這就要涉及接下來的幾個要點了不要使用“日期”剛才提到的問題,其表面問題在時區(qū),本質問題卻在于“日期”這兩個日期有什么問題呢?問題就在于它沒有自帶時區(qū)信息!所以,應用服務器和數(shù)據(jù)庫服務器之間濃綠的拼音怎么寫,將無法就時區(qū)達成一致!各類信息丟失問題是很多 BUG 的根源,這里同樣如此。

更嚴重的是,它還丟失了時間信息既然我要傳的是“日期”,為什么還需要帶時間信息呢?很簡單,因為沒有所謂“日期”!我們?nèi)粘Kf的今天,其實是個時間段,指的是本時區(qū)今天 00:00:00 到明天 00:00:00 之間。

如果換個時區(qū),今天可能就不是今天了,而是從昨天 16:00:00 到 今天 16:00:00當你說的今天指的到底是哪一天呢?所以,雖然和用戶交互時,我們會使用日期的概念,但是在真正的程序中,我們應該始終使用時刻,這樣才能保持概念一致性。

保存時使用來自應用服務器的時刻雖然可以讓數(shù)據(jù)庫服務器和應用服務器保持一致濃綠的拼音怎么寫,但為了簡化邏輯,保存數(shù)據(jù)時,盡量由應用服務器來提供時刻,而不要由數(shù)據(jù)庫服務器提供,這樣可以簡化時刻的來源,更容易保持一致性而對于客戶端提供的時間,我們無法信任,因為客戶端節(jié)點通常不在我們的控制范圍內(nèi),使用客戶端數(shù)據(jù)會帶來數(shù)據(jù)錯誤,甚至帶來安全漏洞。

所以,對于需要保存的數(shù)據(jù),把應用服務器上的時刻作為真相之源通常是最佳選擇查詢時使用來自用戶的時刻查詢通常是來自用戶視角的,比如當用戶在北京查詢今天的數(shù)據(jù)時,他一般是希望查詢北京時間今天 00:00:00 到明天 00:00:00 之間的數(shù)據(jù),而不會關心服務器在哪里。

所以,如果我們要設計一個查詢今天數(shù)據(jù)的 API,那么就不能把一個日期傳給應用服務器,濃綠的拼音怎么寫因為客戶端和服務端的時區(qū)可能不同,服務端就無法準確理解客戶端的意圖我們應該傳給它兩個參數(shù):本時區(qū)今天的起始時刻和結束時刻。

使用“閉-開”區(qū)間表示時間段當我們用時間段來表示日期的時候,需要注意區(qū)間的右側應該是開區(qū)間,也就是說,查詢要今天的數(shù)據(jù)就要查詢今天午夜零點到明天午夜零點之間的數(shù)據(jù),但不包含明天午夜的零點否則即使我們用 11:59:59.999 來查詢,仍然可能存在一條今天的數(shù)據(jù)出現(xiàn)在這個時間點之后。

用 SQL 在查數(shù)據(jù)庫時有一個坑:BETWEEN 是個閉區(qū)間,也就是說其結束時間是包含在統(tǒng)計范圍內(nèi)的所以,我們應該用 今晚零點 >= 時間 AND 時間 < 明晚零點 才能準確查出今天的數(shù)據(jù)強制濃綠的拼音怎么寫指定時區(qū)。

有時候,用戶期望使用的時區(qū)并不是自己所在的時區(qū),比如當用戶到其它時區(qū)出差時,可能關心的仍然是自己原來的時區(qū)除了讓用戶強制修改客戶端的時區(qū)之外,還可以允許當前用戶指定一個時區(qū),在應用服務器上用這個時區(qū)進行換算。

不過,這種情況下客戶端需要對日期選擇器進行特殊處理,以便讓用戶感知的日期與實際使用的日期保持一致指定數(shù)據(jù)庫會話的時區(qū)我們經(jīng)常需要根據(jù)年月日周等標準進行統(tǒng)計這時候只通過指定區(qū)間就不容易統(tǒng)計了我們可以把數(shù)據(jù)庫會話的時區(qū)修改為用戶期望的時區(qū)。

比如 alter session set time_zone = ‘+08:00’;這樣一來,我們在 SQL 中使用的函數(shù)就能得到正確的年月日周等濃綠的拼音怎么寫時區(qū)相關的結果了總結時間包含很多相關卻又容易混淆的概念特別是我們的日常用語往往不是很精確,這就留下了不少隱患。

仔細區(qū)分這些概念,并且在思考的時候刻意使用這些精確的概念,可以避免很多與時間有關的 BUG文/Thoughtworks汪志成原文鏈接:https://insights.thoughtworks.cn/timezone-timestamp-format/

更多精彩洞見,請關注微信公眾號:Thoughtworks洞見

標簽列表