關於日期天數計算的幾個函式

2021-06-16 01:00:52 字數 1346 閱讀 2359

關於日期天數計算的

幾個函式!

今天早上突然要用到乙個計算某月有多少天的函式,翻了半天沒找到系統自帶著中函式,於是動手寫了乙個,如下:

**返回某個月有多少天functionhowmonthday()  parameterscdate  localdaysasinteger,yearsasinteger  if!type("cdate")=="d"      messagebox("引數型別不正確,應該為日期型","系統提示!")      return  endif      days=iif(inlist(month(cdate),1,3,5,7,8,10,12),31,30)  **閏年計算方法  years=year(cdate)  ifmonth(cdate)==2      days=iif(years%400==0or(years%4==0andyears%100<>0),29,28)  endif  returndaysendfunc  

後來鄭宇大哥給我提供了乙個返回月底的函式。如下:

procedureedom*function:返回本月月底*m.l.y1998.8.8parametersdate_todayprivateallsetdatetoansisetcenturyonifmonth(date_today)<12    returnctod(str(year(date_today),4,0)+".";              +str(month(date_today)+1,2,0)+".01")-1else    returnedoy(date_today)endif

思量了半天發現返回月底可能還要簡單一點,我改進了一下:

cdate=date()

??cdate+(32-day(cdate))-day(cdate+(32-day(cdate)))

最後用這個思路改進了一下返回某月有多少天的函式,如下:

functionhowmonthday()  parameterscdate  localdaysasinteger  if!type("cdate")=="d"      messagebox("引數型別不正確,應該為日期型","系統提示!")      return  endif      days=day(cdate+(32-day(cdate))-day(cdate+(32-day(cdate))))  returndaysendfunc  

其實最重要的只有一句:days=day(cdate+(32-day(cdate))-day(cdate+(32-day(cdate))))也不用管閏年平年了,省事。

要是返回月底,那這句改為:cdate+(32-day(cdate))-day(cdate+(32-day(cdate)))即可

原理就是根據增加值來計算當月的下乙個月超出幾天,然後減去幾天就是當月的最後一天了。

計算天數差 常用日期函式

long days mss 60 60 24 long hours 3601 60 60 24 60 60 long minutes 3601 60 60 60 long seconds 3601 60 system.out.println hours t minutes t seconds 1 0...

營銷日期天數計算

1.將上一行的enddate放置在下一行,並格式化時間 格式化為yyyy mm dd 方便後期求時間差 select brand,from unixtime unix timestamp startdate,yyyymmdd yyyy mm dd startdate,from unixtime un...

關於Oracle計算日期間隔天數

最近要計算日期間隔天數,測試發現幾個問題,剛開始搜的,有些不太靠譜。1 首先日期不能相加。2 如果要相減,最好去掉時分秒,格式化成年月日,直接相減的話得到的是小數,日期相減底層應該是操作的毫秒級,都帶時分秒的,這樣算天數的時候會精確到時分秒算,特別是用了sysdate,上午和下午執行的天數結果是不一...