当前位置: 代码迷 >> PB >> 绕不过弯了,求解!解决方案
  详细解决方案

绕不过弯了,求解!解决方案

热度:26   发布时间:2016-04-29 08:30:30.0
绕不过弯了,求解!
一个参数“结账日期”,可以自由设定(1到31之间)

求3个值 “本月期初日期”,“本月期末日期”,“本月”

设 “结账日期” 为 ls_jz
  “本月期初日期” 为 ls_qc
  “本月期末日期” 为 ls_qm
  “本月”为 ls_month

举例1:结账日期 设定为28,那么本月期初日期等于2月28号(ls_qc='20110228'),本月期末日期等于3月28号(ls_qm='20110328'), 本月等于3(ls_month='03')

举例2:结账日期 设定为5,那么本月期初日期等于2月5号(ls_qc='20110205'),本月期末日期等于3月05号(ls_qm='20110305') , 本月等于2(ls_month='02')


求PB代码

------解决方案--------------------
写个表,把相关的数据弄进去,一年最多366行,十年也不到3660行
------解决方案--------------------
这个还要临时算啊,每个月都有要固定好。
我原来接触的系统是这样处理的。
------解决方案--------------------
举例2:结账日期 设定为5,那么本月期初日期等于2月5号(ls_qc='20110205'),本月期末日期等于3月05号(ls_qm='20110305') , 本月等于2(ls_month='02')

为什么不是 3月5号 - 4月5号 本月3?
------解决方案--------------------
1、结帐日期仅是日,能否确定年、月
2、跨了月份后,本月是前一个月还后一个月。具体规律是什么

------解决方案--------------------
请问楼主,3月的14号,15号和16号分别是哪一个月的结账日期
------解决方案--------------------
表达错误, 请问楼主,3月的14号,15号和16号的本月分别是什么?
------解决方案--------------------
探讨
举例2:结账日期 设定为5,那么本月期初日期等于2月5号(ls_qc='20110205'),本月期末日期等于3月05号(ls_qm='20110305') , 本月等于2(ls_month='02')

为什么不是 3月5号 - 4月5号 本月3?

------解决方案--------------------
C/C++ code
/*“结账日期” 为 ls_jz  “本月期初日期” 为 ls_qc  “本月期末日期” 为 ls_qm  “本月”为 ls_month*/date cd,od,ndcd       =today()od       =relativedate(date(string(cd,'yyyy-mm-01')),-1)nd       =relativedate(date(string(relativedate(cd,31),'yyyy-mm-01')),-1)ls_month =string(cd,'yyyymm')if ls_jz > day(od) then   ls_qc = odelse   ls_qc = string(od,'yyyy-mm-') + string(ls_qc,'00')end ifif ls_jz > day(nd) then   ls_qm = ndelse   ls_qm = string(nd,'yyyy-mm-') + string(ls_qc,'00')end if
------解决方案--------------------
C/C++ code
/*“结账日期” 为 ls_jz  “本月期初日期” 为 ls_qc  “本月期末日期” 为 ls_qm  “本月”为 ls_month*/date cd,od,ndcd       =today()od       =relativedate(date(string(cd,'yyyy-mm-01')),-1)nd       =relativedate(date(string(relativedate(cd,31),'yyyy-mm-01')),-1)ls_month =string(cd,'mm')if ls_jz > day(od) then   ls_qc = string(od,'yyyymmdd')else   ls_qc = string(od,'yyyymm') + string(ls_qc,'00')end ifif ls_jz > day(nd) then   ls_qm = string(nd,'yyyymmdd')else   ls_qm = string(nd,'yyyymm') + string(ls_qc,'00')end if
------解决方案--------------------
//输入: ls_jz
string ls_qc,ls_qm,ls_month,ls_jz
ls_jz = sle_1.text
ls_qc = string(today(),"yyyy-mm")+"-"+ls_jz
ls_qm = string(relativedate(date(string(today(),"yyyy-mm")+"-01"),31),"yyyy-mm")+"-"+ls_jz
if daysafter(date(string(date(ls_qm),"yyyy-mm")+"-01"),date(ls_qm)) > daysafter(date(ls_qc),date(string(date(ls_qm),"yyyy-mm")+"-01")) - 1 then
ls_month = string(date(ls_qm),"yyyy-mm")
else
ls_month = string(date(ls_qc),"yyyy-mm")
end if
  相关解决方案