兩個日期之間閏年數計算方法探索
由於一個專案的需要,需要計算兩個日期之間的天數,計算天數就涉及到閏年的問題,如何計算兩個日期之間的閏年數成為了問題的關鍵。
雖然使用迴圈可以很容易的計算出來,如下:
這個演算法的時間複雜度是(nYearE-nYearS
在網上找了好久,也看到一些演算法,但是不能夠對應所有的情況,有些演算法在年份比較大時,差值就不對了。
今天偶然發現了一個規律,如下:一般情況下,兩個日期之間的差值除以4取整,減去重疊的部分,就是它們之間的閏年數,但是,當結束日期的餘數減去開始日期的餘數需要借位時,閏年數需要加1,開始日期的餘數為0的情況,當做4來看。
經過測試,該演算法基本正確,演算法如下:
完整的演算法和測試用例如下:
相關推薦
兩個日期之間閏年數計算方法探索
由於一個專案的需要,需要計算兩個日期之間的天數,計算天數就涉及到閏年的問題,如何計算兩個日期之間的閏年數成為了問題的關鍵。 雖然使用迴圈可以很容易的計算出來,如下: int CountLeapYear
Calendar計算兩個日期之間的天數和週數
每天一篇開發日記,輕鬆快樂每一天!今天介紹的是利用java,Calendar類計算出兩個日期之間的天數和週數的演算法! 計算出日期之間的天數: public Object countTwoDate(O
js實現獲取兩個日期之間篩選出指定周日制的方法
js var start = "2017-5-25"; var end = "2017-6-5"; var startTime = new Date(start); var endTime = new Date(end) var timeArr = []; var weekDay = ["1","2
計算兩個日期之間的天數差C++/java
new abs ear == 關於 ostream logs col 多少 1--Java 分析:調用java中Calendar類 int days(Date date1,Date date2){ Calendar cal = new Calendar.getInst
C++ 計算任意兩個日期之間的天數
gpo start plain efault ediff include win sel put C++寫的一個計算兩個日期之間天數的小程序: [cpp] view plain copy #include <Windows.h>
C#實踐問題:如何在LINQ to Entities 查詢中,計算兩個日期之間相差的天數?
在LINQ to Entities 查詢中,使用常規日期格式轉換函式Convert.ToDateTime()以及日期比較函式TimeSpan.Subtract().Days,都很麻煩而且會出錯:LINQ to Entities不能識別方法。。。 那麼要想在LINQ to Entities 查詢中
c# 計算兩個日期之間相差的天數
策劃要求有每日任務,因為對時間不瞭解,所以查了一下資料,終於完成了要求,現把程式碼記錄在下面。 算不上轉載,更算不上原創的一點想法吧 public vo
計算兩個日期之間相隔的天數
/******************************************************* 程式內容:計算從一個日期到另一個日期一共經歷的天數 *******************************************************/ #include
兩個日期之間相差的月數
在網上看了一下別人的解決方法,直接粗暴的獲取日期的月份,相減就給出答案,這不是我想要的,因為這個完全沒意義: 兩個日期跨年了怎麼辦,如2017-01-02 到2018-12-13相差幾個月? 拿 1減去12嗎。。 後面自己實現了一下: import
Java 求兩個日期之間的天數,最原始方法
import java.util.Scanner; public class first { public static void main(String[] args) { Scanner input_date = new Scanner(System.in);
Oracle 計算兩個日期之間的差(天數,小時,分鐘,秒,毫秒)
兩個Date型別欄位:START_DATE,END_DATE,計算這兩個日期的時間差(分別以天,小時,分鐘,秒,毫秒): 天:ROUND(TO_NUMBER(END_DATE - START_DATE)) 小時:ROUND(TO_NUMBER(END_DATE - START_DATE) *
Java8 實現計算兩個日期之間的天數
這幾天給專案組同事做程式碼評審,剛好看到一段求兩個日期之間的天數,看完後覺得寫的太複雜(採用獲取兩個日期的毫秒數,相減後再除以一天的毫秒數得到天數),剛好專案用的是java8,就想到用java8 新的Java日期/時間API 實現一個更加簡潔的方法 package test;
Java8 實現計算兩個日期之間的相隔多少周
查了很多資料,沒有直接獲取兩個日期之間相隔多少周。 迂迴戰術:獲取兩個日期之間的天數。除以7等於相隔多少周。 參考連結:https://blog.csdn.net/kevin_mails/article/details/78440696 package com.test; impo
JAVA-計算兩個日期之間相差的天數
/** * 計算兩個日期之間相差的天數 * @param date1 * @param date2 * @return */ public static int daysBetween(Date date1,Date
【第一次機房系統】-下機(DateDiff函式計算兩個日期之間的時間差)
一、思維導圖 (一)、主要是準備工作 (二)、主要是計算(timeoff函式) 二、函式 計算時間差: DateDiff(timeinterval,date1,date2[,firstdayofweek[,firstweekofyear]]) 函式返回值為從
Oracle 計算兩個日期之間的差(天數,小時,分鐘,秒,毫秒)
兩個Date型別欄位:START_DATE,END_DATE,計算這兩個日期的時間差(分別以天,小時,分鐘,秒,毫秒): 天:ROUND(TO_NUMBER(END_DATE - START_DATE)) 小時:ROUND(TO_NUMBER(END_DATE - STA
Java兩個日期之間相差秒數
兩個日期之間相差的秒數 public int calLastedTime(Date startDate) { long a = new Date().getTime(); long b = startDate.getTime(); int c = (int)(
SQL---計算兩個日期之間的時間差
在進行日期處理的時候,有時會需要計算一下兩個日期之間相差幾年零幾個月,這裡記錄一下,如何用mysql資料庫和java結合,準確的拿到兩個日期之間的時間差。 1.mysql資料庫中,利用TIMESTAMPDIFF函式,拿到兩個日期之間相差的月數,當然,也可以拿到天數,年數
javascript計算兩個日期之間相差幾個月份
function checkTime(obj){ var startTime= $(obj).parent().siblings().next().next().children().val();//到專案時間 var endTime= $(ob
python簡單獲取兩個日期之間的年度、月度、天數差的方法
最近因為要做一些簡單的結算工作,裡面有一些規則需要對年度、月份、天數進行比較,在網上查了半天,忽然發現python進行年度、月份、日期處理這麼難?!居然只是要計算兩個時間之間的月份差,還要數十行程式碼! 有點不敢相信,所以自己寫了一個日期和月份差的函式,現推薦