pb 日期相關函數

//====================================================================
// 函數: gf_firstday()
//--------------------------------------------------------------------
// 描述:返回某個月的第一天
//--------------------------------------------------------------------
// 參數:日期(字符型,格式YYYYMM或者YYYYMMDD)
//--------------------------------------------------------------------
// 返回:  正確時返回輸入日期所在月份的第一天,否則返回error
//--------------------------------------------------------------------
// 作者:			日期: 2010年01月04日
//====================================================================
string ls_return
ls_return="error"
if len(as_yearmon)=8 then
	ls_return=mid(as_yearmon,1,6)+"01"
elseif len(as_yearmon)=6 then
	ls_return=as_yearmon+"01"
end if
if ls_return='error' or isdate(mid(ls_return,1,4)+"-"+mid(ls_return,5,2)+"-"+mid(ls_return,7,2))=false then
	messagebox("提示","輸入值不符合日期規範")
end if
return ls_return
global type gf_day_lastday from function_object
end type

forward prototypes
global function string gf_day_lastday (string as_yearmon)
end prototypes

global function string gf_day_lastday (string as_yearmon);//====================================================================
// 函數: gf_lastday()
//--------------------------------------------------------------------
// 描述:返回某個月的最後一天
//--------------------------------------------------------------------
// 參數:日期(字符型,格式YYYYMM或者YYYYMMDD)
//--------------------------------------------------------------------
// 返回:  正確時返回輸入日期所在月份的最後一天,否則返回error
//--------------------------------------------------------------------
//====================================================================

string ls_return
string ls_year,ls_month
date ld_date
ls_return="error"
if len(as_yearmon)=8 and isdate(mid(as_yearmon,1,4)+"-"+mid(as_yearmon,5,2)+"-"+mid(as_yearmon,7,2))=false then
elseif len(as_yearmon)=6 and isdate(mid(as_yearmon,1,4)+"-"+mid(as_yearmon,5,2)+"-01")=false then	
else
	ls_return="ok"
end if
if ls_return='error' then
	return ls_return 
end if
ls_year=mid(as_yearmon,1,4)
ls_month=mid(as_yearmon,5,2)
if ls_month='12' then
	ls_year=string(integer(ls_year)+1)
	ls_month='01'
else
	ls_month=string(integer(ls_month)+1)
end if
ld_date=RelativeDate(Date(ls_year+'-'+ls_month+'-01'),-1)
ls_return=string(ld_date,"YYYYMMDD")
return ls_return
end function

global type gf_day_afterday from function_object
end type

forward prototypes
global function long gf_day_afterday (string as_a17s, string as_a17e)
end prototypes

global function long gf_day_afterday (string as_a17s, string as_a17e);//====================================================================
// 函數: gf_day_afterday()
//--------------------------------------------------------------------
// 描述:求出兩個日期之間的天數
//--------------------------------------------------------------------
// 參數:起始日期(字符型,格式YYYYMMDD)、截止日期(字符型,格式YYYYMMDD)
//--------------------------------------------------------------------
// 返回:  整型
//--------------------------------------------------------------------
//====================================================================
long ll_return
if len(as_a17s)<>8 or len(as_a17e)<>8 or isdate(as_a17s) or isdate(as_a17e)  then 
	ll_return=-1
else
	ll_return=DaysAfter(date(left(as_a17s,4)+'-'+mid(as_a17s,5,2)+'-'+mid(as_a17s,7,2)),date(left(as_a17e,4)+'-'+mid(as_a17e,5,2)+'-'+mid(as_a17e,7,2)))
end if
return ll_return
end function

global type gf_day_newdate from function_object
end type

forward prototypes
global function string gf_day_newdate (string as_rq, integer al_ts)
end prototypes

global function string gf_day_newdate (string as_rq, integer al_ts);//====================================================================
// 函數: gf_newdate()
//--------------------------------------------------------------------
// 描述:根據字符型日期格式和加減天數返回新的字符型日期格式
//--------------------------------------------------------------------
// 參數:日期(as_rq字符型,格式YYYYMMDD),天數(al_ts整型)
//--------------------------------------------------------------------
// 返回:  正確時返回新的日期,字符型,格式YYYYMMDD
//--------------------------------------------------------------------
// 作者:			日期: 2010年01月05日
//--------------------------------------------------------------------
//====================================================================
/*
--取當天
select CONVERT(varchar(10),GETDATE(),112)
--取昨天
select convert(varchar(10),getdate()-1,112)
*/
string ls_return
ls_return="error"
if len(as_rq)<>8 or isdate(mid(as_rq,1,4)+"-"+mid(as_rq,5,2)+"-"+mid(as_rq,7,2))=false then
	messagebox("提示","輸入值不符合日期規範")
	return ls_return
end if
ls_return=string(RelativeDate(Date(mid(as_rq,1,4)+"-"+mid(as_rq,5,2)+"-"+mid(as_rq,7,2)),al_ts),"YYYYMMDD")
return ls_return
end function

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章