<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      System.currentTimeMillis()與時區無關

      摘要:System.currentTimeMillis()獲取的時間戳與時區無關。

      綜述

      ??System.currentTimeMillis()經常被用來獲取當前時間戳,單位是毫秒,可以用來計算當前年月日或者星期幾等,可以方便地與Date進行轉換,可以計算某個方法的耗時:

      long curTime = System.currentTimeMillis();
      doSth();
      System.out.println("耗時 = " + (System.currentTimeMillis()-curTime));
      

      ??正因為該方法是當前時間節點與0時區(1970-01-01 00:00:00 +0:00)相差的毫秒數,所以在這個時間節點,無論在哪個時區獲取時間戳,其值絲毫不差。

      測試用例

      ??如何驗證它不會因為時區不同而返回不同的數值呢?測試用例很簡單:調用函數TimeZone.setDefault(TimeZone zone)初始化操作系統時區為上海,打印一次時間戳的計算結果,接著切換操作系統的時區到東京,再運行一次,得到時間戳2。時間戳2和時間戳1的差值,等于切換時區的耗時,看看此耗時是否非常地小;為了使得實驗效果更理想,每次切換時區都打印時分秒格式的當前時間,而且加了一組巴黎時區的數據。

          public static void main(String[] args) throws InterruptedException {
              TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
              long timestamp1 = System.currentTimeMillis();
              SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
              System.out.println(df.format(new Date()));
      
              System.out.println("時間戳: " + timestamp1 + ",OS time zone: " + ZoneId.systemDefault());
              TimeZone.setDefault(TimeZone.getTimeZone("Asia/Tokyo"));
              long timestamp2 = System.currentTimeMillis();
              df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
              System.out.println(df.format(new Date()));
              System.out.println("時間戳: " + timestamp2 + ",OS time zone: " + ZoneId.systemDefault());
              System.out.println("timestamp2 - timestamp1 = " + (timestamp2 - timestamp1));
      
              TimeZone.setDefault(TimeZone.getTimeZone("Europe/Paris"));
              long timestamp3 = System.currentTimeMillis();
              df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
              System.out.println(df.format(new Date()));
              System.out.println("時間戳: " + timestamp3 + ",OS time zone: " + ZoneId.systemDefault());
              System.out.println("timestamp3 - timestamp1 = " + (timestamp3 - timestamp1));
          }
      

      實驗結果如下:

      2023-08-05 12:20:59
      時間戳: 1691209259885,OS time zone: Asia/Shanghai
      2023-08-05 13:21:00
      時間戳: 1691209260033,OS time zone: Asia/Tokyo
      timestamp2 - timestamp1 = 148
      2023-08-05 06:21:00
      時間戳: 1691209260035,OS time zone: Europe/Paris
      timestamp3 - timestamp1 = 150
      

      ??分析實驗結果可知:

      1. 函數System.currentTimeMillis()與時區毫無瓜葛。
      2. df.format(new Date()) 的執行結果和時區休戚相關。其實,SimpleDateFormat的對象df可以調用函數df.setTimeZone(TimeZone.getTimeZone("UTC"))設置時區。

      ??關于時間的存儲和顯示問題,基于數據的存儲和顯示相分離是非常基礎的設計原則,在數據庫存儲時間的時候,只保存表示絕對時間的Long型時間戳,不用顧慮應用服務器和數據庫服務器的時區設置問題,在顯示給用戶的時候,根據用戶設置的時區轉換為字符串。

      小結

      ??函數System.currentTimeMillis()獲取的時間戳與時區無關。基于時間戳的時間存儲不存在時區的問題,時區只與頁面顯示綁定。也就是說,在進行時間戳和日期之間的轉換時,需要根據不同的時區進行計算,以防止出現時間偏差。

      posted @ 2023-08-13 12:12  樓蘭胡楊  閱讀(2319)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 十八禁在线观看视频播放免费 | 伊人激情一区二区三区av| 国产成AV人片久青草影院| 国产无套内射又大又猛又粗又爽 | 国产高清视频在线播放www色| 日区中文字幕一区二区| 国产91精品一区二区亚洲| 日本强伦片中文字幕免费看| 亚洲国产大片永久免费看| 污污网站18禁在线永久免费观看| 亚洲一二三区精品美妇| 精品久久精品午夜精品久久| 久热这里只精品99国产6-99RE视…| 亚洲熟妇精品一区二区| 国产精品亚洲mnbav网站| 午夜福利在线观看成人| 国产精品午夜精品福利| 精品av无码国产一区二区| 久久国产免费直播| 人妻日韩精品中文字幕| 国产91小视频在线观看| 日韩中文字幕有码午夜美女| 婷婷五月综合丁香在线| 国产极品美女高潮无套| 乱色老熟妇一区二区三区| 国内不卡一区二区三区| 美女网站免费观看视频| 性人久久久久| 色噜噜一区二区三区| 熟女精品国产一区二区三区| 成人自拍短视频午夜福利| 亚洲人成小说网站色在线 | 亚洲熟妇无码爱v在线观看| 精品综合一区二区三区四区| 亚洲qingse中文字幕久久| 国产乱码精品一区二区三上| 国产免费高清69式视频在线观看 | 国产麻豆放荡av激情演绎| 极品少妇的粉嫩小泬视频| 亚洲黄色一级片在线观看| 5D肉蒲团之性战奶水欧美|