|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
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 文章: 2158
第 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 |
|
回頂端 |
|
|
garfield Site Admin
註冊時間: 2003-01-30 文章: 2158
第 5 樓
|
發表於: 星期一 八月 25, 2003 11:51 am 文章主題: |
|
|
原來古老的函數也有新參數, 都忘了看HELP _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
|
奔跑的愛情
註冊時間: 2003-08-28 文章: 27
第 6 樓
|
發表於: 星期四 八月 28, 2003 3:42 pm 文章主題: |
|
|
好!谢谢 _________________ delphi vf sql |
|
回頂端 |
|
|
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 樓
|
|
回頂端 |
|
|
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 文章: 2158
第 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 |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|