Lua語言,兩個年份相差的天數

2021-06-22 18:40:53 字數 2752 閱讀 4543

要求計算該日期與2023年10月1日距離多少天

例如:使用者輸入了:1949-10-2

程式輸出:1

使用者輸入了:1949-11-1

程式輸出:31

總共是寫了兩個類,然後**微亂:

yearandmonth:

require("yearprint")

local nyear = 1949

local nmonth = 10

local nday =1

--[[--

--@param #number year 傳遞過來的引數是年數

--@param #number month 傳遞過來的引數是月份

--@param #number day 傳遞過來的引數是日期

--@return #day 返回的是這一年的天數

--]]

local function getdays(year,month,day)

local temp =

--判斷是否是閏年,如果為閏年,改變2月是29,否則改變2月是28

if ((year%4==0 and year%100 ~= 0) or year%400==0) then

temp[2] = 29

else

temp[2] = 28

endfor i = 1,month-1 do

day = day + temp[i];

end-- 返回的結果是這一年到月份的天數

return day;

end--[[--

--@param #number year 傳遞多來的年數

--@return #number 判斷年數是否為閏年,如果是閏年,返回366天,反之則返回365天

--]]

local function days(year)

--判斷是否閏年,如果閏年,返回366天,如果不是閏年,返回365天

return ((year%4==0 and year%100 ~=0) or year%400==0) and 366 or 365;

end--[[--

--@param #number sum 兩個年月份相差的天數

--@param #number year 輸入的年份

--@param #number month 輸入的月份

--@param #number day 輸入的日期

--@param #number nyear 初始的年份

--@param #number nmonth 初始的月份

--@param #number nday 初始的日期

--@return #number sum是兩個年份相差的天數

--]]

local function sumday(year,month,day)

local sum = 0;

-- 小於nyear年

if year < nyear then

for x = year,nyear - 1 do

-- 傳遞年數過去,number型

sum = sum + days(x);

end-- 傳遞的是number型

sum = sum + getdays(nyear,nmonth,nday);

sum = sum - getdays(year,month,day);

elseif year == nyear then

-- 如果是同一年,判斷月份的大小,然後去絕對值

sum = math.abs(getdays(year,month,day)-getdays(nyear,nmonth,nday));

else

-- 大於nyear年

for i = nyear + 1 ,year do

sum = sum + days(i);

endsum = sum + getdays(year,month,day);

sum = sum - getdays(nyear,nmonth,nday);

endprint("相差天數結果:" ..sum);

return sum

end--[[--

--@param #class yearprint ymdprint算是檔案加密,printyearmonthday()輸入年月日的方法

--@param #table data 本地化的乙個陣列,並接受了yearprint累裡的資料

--@param #number sum 兩個年月份相差的天數

--@param #number year 輸入的年份

--@param #number month 輸入的月份

--@param #number day 輸入的日期

--]]

local function isleapyear()

local data = {}

data = ymdprint.printyearmonthday()

local year = tonumber(data.year);

local month = tonumber(data.month);

local day = tonumber(data.day);

sumday(year,month,day)

end--[[--

--@isleapyear是計算年月份天數的方法

--]]

function main()

isleapyear()

endmain()

第二個類yearprint:

2 2 兩個日期相差天數

現在有兩個不同的日期,你能告訴我它們之間差幾天嗎?輸入格式 有多行資料,每行資料報含6個數字,中間用空格分隔,每3個數字代表乙個日期。輸出格式 對應於輸入資料,輸出資料有相同的行數,每行表示對應的兩個日期相差的天數。輸入樣例 1934 2 4 2047 11 30 2192 10 3 1921 5 ...

JAVA 比較兩個日期相差的天數

在測試工作中經常會使用到比較兩個日期相差的天數,我之前用過實現這一功能的兩個版本的方法,源 如下 版本 1 public static intgetintervaldays date fdate,date odate longintervalmilli odate.gettime fdate.get...

java 判斷兩個時間相差的天數

1 實現目標 輸入 兩個日期 輸出 兩個日期相差的天數 2 實現 方法1 通過calendar類的日期比較。注意 這裡需要考慮一下 date2比date1多的天數 param date1 param date2 return public static intdifferentdays date d...