<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 問題 你有一個安排在2012年9月21日早上9:30的電話會議,地點在芝加哥。而你的朋友在印度的班加羅爾,那么他應該在當地時間幾點參加這個會議呢? ## 解決方案 對幾乎所有涉及到時區的問題,你都應該使用 `pytz` 模塊。這個包提供了Olson時區數據庫,它是時區信息的事實上的標準,在很多語言和操作系統里面都可以找到。 pytz模塊一個主要用途是將 `datetime` 庫創建的簡單日期對象本地化。比如,下面如何表示一個芝加哥時間的示例: >>> from datetime import datetime >>> from pytz import timezone >>> d = datetime(2012, 12, 21, 9, 30, 0) >>> print(d) 2012-12-21 09:30:00 >>> >>> # Localize the date for Chicago >>> central = timezone('US/Central') >>> loc_d = central.localize(d) >>> print(loc_d) 2012-12-21 09:30:00-06:00 >>> 一旦日期被本地化了, 它就可以轉換為其他時區的時間了。為了得到班加羅爾對應的時間,你可以這樣做: >>> # Convert to Bangalore time >>> bang_d = loc_d.astimezone(timezone('Asia/Kolkata')) >>> print(bang_d) 2012-12-21 21:00:00+05:30 >>> 如果你打算在本地化日期上執行計算,你需要特別注意夏令時轉換和其他細節。比如,在2013年,美國標準夏令時時間開始于本地時間3月13日凌晨2:00(在那時,時間向前跳過一小時)。如果你正在執行本地計算,你會得到一個錯誤。比如: >>> d = datetime(2013, 3, 10, 1, 45) >>> loc_d = central.localize(d) >>> print(loc_d) 2013-03-10 01:45:00-06:00 >>> later = loc_d + timedelta(minutes=30) >>> print(later) 2013-03-10 02:15:00-06:00 # WRONG! WRONG! >>> 結果錯誤是因為它并沒有考慮在本地時間中有一小時的跳躍。為了修正這個錯誤,可以使用時區對象 `normalize()` 方法。比如: >>> from datetime import timedelta >>> later = central.normalize(loc_d + timedelta(minutes=30)) >>> print(later) 2013-03-10 03:15:00-05:00 >>> ## 討論 為了不讓你被這些東東弄的暈頭轉向,處理本地化日期的通常的策略先將所有日期轉換為UTC時間,并用它來執行所有的中間存儲和操作。比如: >>> print(loc_d) 2013-03-10 01:45:00-06:00 >>> utc_d = loc_d.astimezone(pytz.utc) >>> print(utc_d) 2013-03-10 07:45:00+00:00 >>> 一旦轉換為UTC,你就不用去擔心跟夏令時相關的問題了。因此,你可以跟之前一樣放心的執行常見的日期計算。當你想將輸出變為本地時間的時候,使用合適的時區去轉換下就行了。比如: >>> later_utc = utc_d + timedelta(minutes=30) >>> print(later_utc.astimezone(central)) 2013-03-10 03:15:00-05:00 >>> 當涉及到時區操作的時候,有個問題就是我們如何得到時區的名稱。比如,在這個例子中,我們如何知道“Asia/Kolkata”就是印度對應的時區名呢?為了查找,可以使用ISO 3166國家代碼作為關鍵字去查閱字典 `pytz.country_timezones` 。比如: >>> pytz.country_timezones['IN'] ['Asia/Kolkata'] >>> 注:當你閱讀到這里的時候,有可能pytz模塊以及不再建議使用了,因為PEP431提出了更先進的時區支持。但是這里談到的很多問題還是有參考價值的(比如使用UTC日期的建議等)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看