  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		littlechou
 
 
  註冊時間: 2005-02-02 文章: 47
 
  第 1 樓
  | 
		
			
				 發表於: 星期五 二月 24, 2006 4:10 pm    文章主題: 日期函數 | 
				     | 
			 
			
				
  | 
			 
			
				請教:
 
有何函數可以知道,每個月份共有幾天。
 
例如:1月有31天,2月有28天。 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		a123eric
 
 
  註冊時間: 2003-10-20 文章: 64
 
  第 2 樓
  | 
		
			
				 發表於: 星期五 二月 24, 2006 5:53 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				RELEASE ALL
 
CLOSE all
 
CLEAR ALL
 
 
=MESSAGEBOX(getlastday(INPUTBOX("請輸入年月(YYYY/MM)", "抓出當月天數, 請輸入西元年")))
 
 
FUNCTION getlastday(pYM)
 
LOCAL	lcY, lcM
 
SET DATE MDY 
 
IF EMPTY(pYM)
 
	RETURN 0
 
ENDIF 
 
lcY = IIF(VAL(SUBSTR(pYM, 6, 2)) < 12, SUBSTR(pYM, 1, 4), STR(INT(VAL(SUBSTR(pYM, 1, 4)) + 1), 4))
 
lcM = IIF(VAL(SUBSTR(pYM, 6, 2)) < 12, PADL(INT(VAL(SUBSTR(pYM, 6, 2))+1), 2, "0"), "01")
 
RETURN DAY(CTOD(lcM + "/01/" + lcY)-1) | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		215001
 
 
  註冊時間: 2003-06-11 文章: 393
 
  第 3 樓
  | 
		
			
				 發表於: 星期五 二月 24, 2006 8:35 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				? RetDays(2006,2)
 
 
FUNCTION RetDays
 
	LPARAMETERS xyyyy,xmm
 
	LOCAL xdate
 
	
 
	xdate=DATE(xyyyy,xmm,1)		&& 本月1日
 
	xdate=GOMONTH( xdate,1 ) -1	&& 下個月1日-1天=本月底
 
	
 
	RETURN DAY(xdate)
 
ENDFUNC | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		zxplhzlt
 
 
  註冊時間: 2004-02-27 文章: 2
 
  第 4 樓
  | 
		
			
				 發表於: 星期六 二月 25, 2006 8:54 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				? RetDays(2006,2) 
 
 
FUNCTION RetDays 
 
LPARAMETERS xyyyy,xmm 
 
RETURN gomonth(date(xyyy,xmm,1),1)-date(xyyy,xmm,1)
 
ENDFUNC | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		catjoke
 
 
  註冊時間: 2003-06-16 文章: 175 來自: 香港
  第 5 樓
  | 
		
			
				 發表於: 星期六 二月 25, 2006 9:17 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				現在寫程式真幸福, 以前 自己寫一個 DOW() 的函數, 就要 計算一切~~~
 
因為 日期是不能相減 咁輕鬆!
 
 
? RetDays2(2006,2) 
 
 
FUNCTION RetDays2
 
LPARAMETERS xyyyy,xmm 
 
DOW1 = DOW(date(xyyy,xmm,1))
 
DOW2 = DOW(gomonth(date(xyyy,xmm,1),1)
 
IF DOW2>DOW1
 
  nDAYS = 28 + DOW2 - DOW1
 
ELSE
 
  nDAYS = 35 + DOW2 - DOW1
 
ENDIF
 
 
RETURN nDAYS
 
ENDFUNC _________________ 喵喎~ 貓當然是 "茅" 的嘛! ^0^; | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		alainchou
 
 
  註冊時間: 2005-07-27 文章: 4
 
  第 6 樓
  | 
		
			
				 發表於: 星期一 二月 27, 2006 4:41 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				我比較懶
 
我都是讓日期跳至下個月的第一天再減一
 
就知道那個月的最後一天是什麼了
 
Foxpro的日期是可以加減的啊! | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		Abel
 
 
  註冊時間: 2005-03-14 文章: 189 來自: 鹿港小鎮
  第 7 樓
  | 
		
			
				 發表於: 星期三 三月 01, 2006 1:10 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				我也是採用 alainchou 的方法,
 
將待測月份 +1 得下一個月份,再 -1 就成了
 
 
ex 要知道 2006/2 您可以
 
 
? day({^2006/3/1} -1)
 
 
就得到 28 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |