關於日期天數計算的
幾個函式!
今天早上突然要用到乙個計算某月有多少天的函式,翻了半天沒找到系統自帶著中函式,於是動手寫了乙個,如下:
**返回某個月有多少天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,上午和下午執行的天數結果是不一...