Calendar原始碼--JDK是怎麼計算時間的
背景
平常自己寫程式碼用到時間戳去區分兩個時間是不是同一天,兩天之間的自然天數差是多少。然後就會用一些方法將當前時區的時間戳轉化成對應的yyyyMMdd格式,然後再轉成這個時間對應零時區的時間戳,這個時間戳就是從1970年1月1號之後的時間偏移量。用這個偏移量就能計算出兩個時間是不是同一天、自然天數差是多少。
示例程式碼如下:
/**
* 計算第二個時間減第一個時間的天數差,單位毫秒
* 同一天則為0, 第二個時間大,則為正;否則為負
* 考慮到了時區
*/
public static long daysDiff(long timeFirst, long timeNext) {
try {
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
long time1 = formatter.parse(formatter.format(timeFirst)).getTime();
long time2 = formatter.parse(formatter.format(timeNext)).getTime();
long dayFirst = time1 / milliSecondsOneDay;
long dayNext = time2 / milliSecondsOneDay;
return dayNext - dayFirst;
} catch (ParseException e) {
log.error("daysDiff calc wrong ", e);
return Integer.MIN_VALUE;
}
}
相關文章
- 時間複雜度怎麼算?如何計算時間複雜度?時間複雜度
- 成品直播原始碼,golang計算時間段內的工作日數量原始碼Golang
- 說下你平時是怎麼自學的?怎麼安排時間的?
- golang gin框架進行時間運算之解決orm時間與時間運算——附原始碼Golang框架ORM原始碼
- Java 時間類 Date、Calendar 及用法Java
- 適合時間序列資料的計算指令碼指令碼
- 時間差計算
- PHP時間計算PHP
- 【Python】我是如何使計算時間提速25.6倍的Python
- context裡的超時時間是怎麼在微服務之間傳遞的Context微服務
- JavaScript計算兩個時間點之間的時間差JavaScript
- 時間複雜度的計算時間複雜度
- JavaScript 計算程式碼執行花費時間JavaScript
- Spring 原始碼(3)Spring BeanFactory 是怎麼建立的?Spring原始碼Bean
- 【JDK】JDK原始碼分析-ReentrantLockJDK原始碼ReentrantLock
- 什麼是計算機編碼的定義?計算機
- 以太坊gas是什麼?gasprice怎麼計算?
- Java 中JDK7時間類與JDK8中的時間類JavaJDK
- Vue3原始碼解析--收集的依賴是什麼?怎麼收集的?什麼時候收集的?Vue原始碼
- 說說你是怎麼安排你工作外的時間的?
- 雲端計算開發是什麼?雲端計算的就業前途怎麼樣?就業
- 紅外測溫儀的精度是怎麼計算的
- 恆訊科技分析:是什麼導致雲端計算中的CPU竊取時間?
- JS呼叫時間的方法和計算JS
- Carbon 計算時間差 得出的應該是負數 但是卻是正數
- 交友原始碼中即時通訊怎麼工作的?原始碼
- 【JDK】JDK原始碼分析-AbstractQueuedSynchronizer(3)JDK原始碼
- 【JDK】JDK原始碼分析-AbstractQueuedSynchronizer(2)JDK原始碼
- 【JDK】JDK原始碼分析-AbstractQueuedSynchronizer(1)JDK原始碼
- 直播小程式原始碼,vue實現時間倒數計時原始碼Vue
- 直播電商原始碼,活動開始時間計時器原始碼
- 關於《深入理解計算機系統》 程式碼是怎麼執行的計算機
- TimeDateCalculator for mac 時間計算器Mac
- 選redis還是memcache,原始碼怎麼說?Redis原始碼
- Oracle計算時間函式(對時間的加減numtodsinterval、numtoyminterval)Oracle函式
- 計算機軟著的程式碼文件怎麼做?計算機
- 部分JDK版本的釋出時間JDK
- 從JDK原始碼角度看併發競爭的超時JDK原始碼