首页 > 代码库 > PB常用日期
PB常用日期
用一条语句写成的有关日期函数
//1.生肖(年份参数:int ls_year 返回参数:string):
mid(fill(
‘鼠牛虎兔龙蛇马羊猴鸡狗猪‘
,48),(mod(ls_year -1900,12)+13)*2 -1,2)
//2.天干地支(年份参数:int ls_year 返回参数:string):
mid(fill(
‘甲乙丙丁戊己庚辛壬癸‘
,40),(mod(ls_year -1924,10)+11)*2 -1,2)+mid(fill(
‘子丑寅卯辰巳午未申酉戌亥‘
,48),(mod(ls_year -1924,12)+13)*2 -1,2)
//3.星座(日期参数:date ls_date 返回参数:string):
mid(
"摩羯水瓶双鱼白羊金牛双子巨蟹狮子处女天秤天蝎射手摩羯"
,(month(ls_date)+sign(sign(day(ls_date) -(19+integer(mid(
‘102123444423‘
,month(ls_date),1))))+1))*4 -3,4)+
‘座‘
//4.判断闰年(年份参数:int ls_year 返回参数:int 0=平年,1=闰年):
abs
(sign(mod(sign(mod(
abs
(ls_year),4))+sign(mod(
abs
(ls_year),100))+sign(mod(
abs
(ls_year),400)),2)) -1)
//5.某月天数(日期参数:date ls_date 返回参数:int):
integer(28+integer(mid(
‘3‘
+string(
abs
(sign(mod(sign(mod(
abs
(year(ls_date)),4))+sign(mod(
abs
(year(ls_date)),100))+sign(mod(
abs
(year(ls_date)),400)),2)) -1))+
‘3232332323‘
,month(ls_date),1)))
//6.某月最后一天日期(日期参数:date ls_date 返回参数:date):
date(year(ls_date),month(ls_date),integer(28+integer(mid(
‘3‘
+string(
abs
(sign(mod(sign(mod(
abs
(year(ls_date)),4))+sign(mod(
abs
(year(ls_date)),100))+sign(mod(
abs
(year(ls_date)),400)),2)) -1))+
‘3232332323‘
,month(ls_date),1))))
//7.另一个求某月最后一天日期(日期参数:date ls_date 返回参数:date):
a.
RelativeDate (date(year(ls_date)+sign(month(ls_date) -12)+1,mod(month(ls_date)+1,13)+
abs
(sign(mod(month(ls_date)+1,13)) -1),1),-1)
b.
RelativeDate(date(year(ls_date)+integer(month(ls_date)/12),mod(month(ls_date),12)+1,1),-1)
//8.另一个求某月天数(日期参数:date ls_date 返回参数:int):
a.
day(RelativeDate (date(year(ls_date)+sign(month(ls_date) -12)+1,mod(month(ls_date)+1,13)+
abs
(sign(mod(month(ls_date)+1,13)) -1),1),-1))
b.
day(RelativeDate(date(year(ls_date)+integer(month(ls_date)/12),mod(month(ls_date),12)+1,1),-1))
//9.某月某日星期几--同PB系统函数DayName(日期参数:date ls_date 返回参数:string):
‘星期‘
+mid(
‘日一二三四五六‘
,(mod(year(ls_date) -1 +
int
((year(ls_date) -1)/4) -
int
((year(ls_date) -1)/100) +
int
((year(ls_date) -1)/400) + daysafter(date(year(ls_date),1,1),ls_date)+1,7)+1)*2 -1,2)
//10.求相隔若干月份后的相对日期(日期参数:date ls_date 相隔月份(可取负数):int ls_add_month 返回参数:date):
date(year(ls_date)+
int
((month(ls_date)+ls_add_month)/13),
long
(mid(fill(
‘010203040506070809101112‘
,48),(mod(month(ls_date)+ls_add_month -1,12)+13)*2 -1,2)),day(ls_date) -integer(right(left(string(day(RelativeDate (date(year(ls_date)+
int
((month(ls_date)+ls_add_month)/13)+sign(
long
(mid(fill(
‘010203040506070809101112‘
,48),(mod(month(ls_date)+ls_add_month -1,12)+13)*2 -1,2)) -12)+1,mod(
long
(mid(fill(
‘010203040506070809101112‘
,48),(mod(month(ls_date)+ls_add_month -1,12)+13)*2 -1,2))+1,13)+
abs
(sign(mod(
long
(mid(fill(
‘010203040506070809101112‘
,48),(mod(month(ls_date)+ls_add_month -1,12)+13)*2 -1,2))+1,13)) -1),1),-1)) -day(ls_date),
‘00‘
)+
‘00000‘
,5),3))/100)
//11.求某日在当年所处的周数(日期参数:date ls_date 返回参数:int):
//a.周始日为星期天
//a1
abs
(
int
(-((daysafter( RelativeDate(date(year(ls_date),1,1), -mod(year(ls_date) -1 +
int
((year(ls_date) -1)/4) -
int
((year(ls_date) -1)/100) +
int
((year(ls_date) -1)/400) + 1,7) +1),ls_date)+1)/7)))
//a2(使用DayNumber函数)
abs
(
int
(-((daysafter( RelativeDate(date(year(ls_date),1,1), -DayNumber(date(year(ls_date),1,1))+1),ls_date)+1)/7)))
//b.周始日为星期一
//b1
abs
(
int
(-((daysafter( RelativeDate(date(year(ls_date),1,1), -integer(mid(
‘6012345‘
,mod(year(ls_date) -1 +
int
((year(ls_date) -1)/4) -
int
((year(ls_date) -1)/100) +
int
((year(ls_date) -1)/400) + 1,7),1))),ls_date)+1)/7)))
//b2(使用DayNumber函数)
abs
(
int
(-((daysafter( RelativeDate(date(year(ls_date),1,1), -integer(mid(
‘6012345‘
,DayNumber(date(year(ls_date),1,1)),1))),ls_date)+1)/7)))
//12.求某日相对于过去某一日期所处的周数(日期参数:date ls_date_1(要求的某日),ls_date_2(过去的某日) 返回参数:int):
//注:ls_date_1>ls_date_2
//a.周始日为星期天
//a1
abs
(
int
(-((daysafter( RelativeDate(ls_date_2, -mod(year(ls_date_2) -1 +
int
((year(ls_date_2) -1)/4) -
int
((year(ls_date_2) -1)/100) +
int
((year(ls_date_2) -1)/400) + daysafter(date(year(ls_date_2),1,1),ls_date_2)+ 1,7) +1),ls_date_1)+1)/7)))
//a2(使用DayNumber函数)
abs
(
int
(-((daysafter( RelativeDate(ls_date_2, -DayNumber(ls_date_2)+1),ls_date_1)+1)/7)))
//b.周始日为星期一
//b1
abs
(
int
(-((daysafter( RelativeDate(ls_date_2, -integer(mid(
‘6012345‘
,mod(year(ls_date_2) -1 +
int
((year(ls_date_2) -1)/4) -
int
((year(ls_date_2) -1)/100) +
int
((year(ls_date_2) -1)/400) + daysafter(date(year(ls_date_2),1,1),ls_date_2)+ 1,7) ,1))),ls_date_1)+1)/7)))
//b2(使用DayNumber函数)
abs
(
int
(-((daysafter( RelativeDate(ls_date_2, -integer(mid(
‘6012345‘
,DayNumber(ls_date_2),1))),ls_date_1)+1)/7)))
PB常用日期
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。