VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

取得某月最後一天
前往頁面 1, 2  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
Ruey



註冊時間: 2003-03-12
文章: 1698
來自: tunglo

第 1 樓

發表發表於: 星期日 四月 13, 2003 11:57 am    文章主題: 取得某月最後一天 引言回覆

**tdate--傳入20030413,查詢後一天30號
function getlastdate(tdate)


return date(year(tdate),month(tdate)+1,1)-1
end function
回頂端
檢視會員個人資料 發送私人訊息
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2157


第 2 樓

發表發表於: 星期日 四月 13, 2003 6:23 pm    文章主題: 引言回覆

我是用寫個FUNC來用
********************************
Func monthdate &&--傳回某月份的第一天或最後一天
Lpara MDATE , mkind
*mkind=1 本月第一天
* =9 本月最後一天 &&--內定值
* =11 下月第一天
* =19 下月最後一天
* =-1 上月第一天
* =-9 上月最後一天
If type('mkind')#'N'
mkind=9
Endif
Local mret
Do case
Case mkind= 1
mret = MDATE - day(MDATE)+1 &&--本月第一天
Case mkind= -9
mret = monthdate( mdate,1)-1 &&--上月最後一天
Case mkind= -1
mret = monthdate(monthdate( mdate,1)-1 ,1) &&--上月第一天
Case mkind= 11
mret = monthdate( monthdate(MDATE,1)+31 , 1) &&--下月第一天
Case mkind= 19
mret = monthdate( monthdate(MDATE,1)+31 , 9) &&--下月最後一天
Other
mret = monthdate( MDATE ,1)+31 &&--下個月的某一天
mret = mret - day( mret) &&--本月底
Endcase
Return mret
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
aslyn



註冊時間: 2003-08-21
文章: 4


第 3 樓

發表發表於: 星期四 八月 21, 2003 10:30 pm    文章主題: 引言回覆

簡易的月底日檢測程式,供參考如下:

* 參數:dDate :欲求月底日的日期(日期型態)

* 傳回:日期型態的月底日期

lparameter dDate

Local nYY,nMM,cYY,cMM,cDD,cDate,Ret_Date

nYY=year(dDate)
nMM=month(dDate) + 1
cDD="1"
If nMM > 12
nYY= nYY + 1
nMM=1
Endif
cYY=alltrim(str(nYY))
cMM=alltrim(str(nMM))
cDate=cYY + "/" + cMM + "/" + cDD
Ret_Date=ctod(cDate) - 1

Return Ret_Date
回頂端
檢視會員個人資料 發送私人訊息
朱育興



註冊時間: 2003-08-25
文章: 661
來自: 台中市大里區

第 4 樓

發表發表於: 星期一 八月 25, 2003 1:03 am    文章主題: 引言回覆

若只是要得知某月的最後一天,應該是不需要使用到自定函數吧
* M_dTestDate --> 要測試的日期
? GOMONTH(DATE(YEAR(M_dTestDate),MONTH(M_dTestDate),1),1)-1
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2157


第 5 樓

發表發表於: 星期一 八月 25, 2003 11:51 am    文章主題: 引言回覆

原來古老的函數也有新參數, 都忘了看HELP
_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
奔跑的愛情



註冊時間: 2003-08-28
文章: 27


第 6 樓

發表發表於: 星期四 八月 28, 2003 3:42 pm    文章主題: 引言回覆

好!谢谢
_________________
delphi vf sql
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站 MSN Messenger
lukapp



註冊時間: 2003-09-07
文章: 42


第 7 樓

發表發表於: 星期日 九月 07, 2003 12:06 pm    文章主題: 引言回覆

ruey: 你的 func 好像在 12月+1 出 error
function getlastdate(tdate)
return date(year(tdate),month(tdate)+1,1)-1
end function
**************************************************
FUNC LASTDAY(xD)
retu day(gomonth( date( year(xd) , month(xd) , 1 ) , 1 ) -1)
回頂端
檢視會員個人資料 發送私人訊息
Ruey



註冊時間: 2003-03-12
文章: 1698
來自: tunglo

第 8 樓

發表發表於: 星期一 九月 08, 2003 6:20 pm    文章主題: 引言回覆

lukapp 寫到:
ruey: 你的 func 好像在 12月+1 出 error
function getlastdate(tdate)
return date(year(tdate),month(tdate)+1,1)-1
end function
**************************************************
FUNC LASTDAY(xD)
retu day(gomonth( date( year(xd) , month(xd) , 1 ) , 1 ) -1)


感謝指正

另外學到gomonth函數用法

good

_________________
#############################
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!

學會VFP使用者社區的搜尋,Code才會更有趣~
#############################
回頂端
檢視會員個人資料 發送私人訊息
張得子



註冊時間: 2003-04-28
文章: 15


第 9 樓

發表發表於: 星期三 九月 10, 2003 9:16 am    文章主題: 引言回覆

我習慣日期採用字元型態所以我也寫了一支function,取得每月最後一天。
************************
*取每月最一天
************************
FUNCTION dayend_p(p_para)
&&p_para 字元年月 例如西元2003年9月,則p_para=”200309”,民國則p_para=”09209”
&& 僅適用set date to Taiwan & set date to ymd 格式

LOCAL m_mon,m_pos,m_year
if set("date")="TAIWAN"
m_pos=5
else && set("date")="YMD"
m_pos=6
endif
m_mon=right(p_para,2)
m_year=VAL(LEFT(p_para,m_pos-2))
DO CASE
CASE INLIST(m_mon,"01","03","05","07","08","10","12")
m_day="31"
CASE INLIST(m_mon,"04","06","09","11")
m_day="30"
CASE m_mon="02"
if mod(m_year,4)=0 && 是否潤年
if mod(m_year,100)<>0
m_day="29"
else
if mod(m_year,400)=0
m_day="29"
else
m_day="28"
endif
endif
else
m_day="28"
endif
endcase
RETURN p_para+m_day &&字元型態年月日
回頂端
檢視會員個人資料 發送私人訊息
朱育興



註冊時間: 2003-08-25
文章: 661
來自: 台中市大里區

第 10 樓

發表發表於: 星期三 九月 10, 2003 1:28 pm    文章主題: 引言回覆

FUNCTION dayend_p 這個太囉嗦了,建議不要用
_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
nelsonchuang



註冊時間: 2003-09-04
文章: 563
來自: 臺灣

第 11 樓

發表發表於: 星期日 五月 06, 2007 4:39 pm    文章主題: 取得當月最後一天 引言回覆

以前很愚蠢的把日期加加減減,或弄成函式,直到最近看到了別人用asp.net
寫的東西,我不得不說,我的見識到目前為止也長了一點
我又把它轉換成自己的,
a=date()
b=DAY(GOMONTH(a,1)-DAY(a)) &&取得當月所有總天數
c=GOMONTH(a,1)-DAY(a) &&取得當月最後一天

_________________
大家好,請多指教
回頂端
檢視會員個人資料 發送私人訊息
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2157


第 12 樓

發表發表於: 星期一 五月 07, 2007 9:55 am    文章主題: 引言回覆

代碼:

a=date()
b=DAY(GOMONTH(a,1)-DAY(a)) &&取得當月所有總天數

有盲點, 當今天為31日, 而且下個月只有30日時, 就會不準.
b=DAY(GOMONTH(a,1)-DAY(GOMONTH(a,1)))
才對.

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
impotence



註冊時間: 2005-02-21
文章: 135
來自: Hong Kong

第 13 樓

發表發表於: 星期一 五月 07, 2007 4:00 pm    文章主題: 引言回覆

fdate : 要測試的日期
GOMONTH(fdate,1)-DAY(GOMONTH(fdate,1))

_________________
一個常常忘記 Command 的人 !
回頂端
檢視會員個人資料 發送私人訊息
nelsonchuang



註冊時間: 2003-09-04
文章: 563
來自: 臺灣

第 14 樓

發表發表於: 星期一 五月 07, 2007 7:48 pm    文章主題: 引言回覆

garfield 寫到:
代碼:

a=date()
b=DAY(GOMONTH(a,1)-DAY(a)) &&取得當月所有總天數

有盲點, 當今天為31日, 而且下個月只有30日時, 就會不準.
b=DAY(GOMONTH(a,1)-DAY(GOMONTH(a,1)))
才對.

呵呵,這個倒是沒想到,謝謝啦~

_________________
大家好,請多指教
回頂端
檢視會員個人資料 發送私人訊息
Le1015



註冊時間: 2004-08-06
文章: 30


第 15 樓

發表發表於: 星期五 九月 07, 2007 3:45 pm    文章主題: 引言回覆

真正完全沒問題的函數

Function EndDate
LPARAMETER O_Date
Retrun GoMonth(O_Date-Day(O_Date)+1,1)-1
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 1, 2  下一頁
1頁(共2頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作