12个用一条语句写成的有关日期函数

来源:互联网 发布:million years ago知乎 编辑:程序博客网 时间:2024/05/21 13:54

12个用一条语句写成的有关日期函数
?
//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)))


某月最后一天日期
relativedate(date(year(ld_1)+integer(month(ld_1)/12),mod(month(ld_1),12)+1,1),-1)
取得最后一天
day(上面语句)
闰年(1为闰年, 0为平年)
integer(day(relativedate(date(year(ld_1), 3, 1), -1))/29)
当前日期所在星期数
integer(daysafter(date(year(ad_date), 1, 1), ad_date)/7) + 1 + integer((daynumber(date(year(ad_date), 1, 1)) + mod(daysafter(date(year(ad_date), 1, 1), ad_date), 7) -1)/7)

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 右膝盖内侧疼痛怎么办 膝盖关节腔积液怎么办 小孩玩游戏花钱怎么办 初三玩手机上瘾怎么办 无线网有感叹号怎么办 台式电脑网络感叹号怎么办 忘记发红包密码怎么办 电信诈骗被骗后怎么办 C小孩讨厌上学怎么办 军训来大姨妈怎么办 夏天军训来月经怎么办 军训遇到大姨妈怎么办 长春市图书馆读者证怎么办 济宁图书馆怎么办读者卡 海南省图书馆读者证怎么办 小孩子特别能吃怎么办 小孩吃不下去药怎么办 小孩不肯去上学怎么办 初中没有团员证怎么办 入团申请书丢了怎么办 刚成立单位社保怎么办 老年人耳鸣怎么办小妙招 老人血压高200怎么办 老人晕车后难受怎么办 老人头晕心里慌怎么办 老人憋的慌怎么办 老人厌食没胃口怎么办 老年人心里整天疑心病怎么办 一个人疑心太重怎么办 我疑心病很重怎么办 老人疑心病太重怎么办 心理有问题该怎么办 老人得了妄想病怎么办 小学生没做作业怎么办 孩子完不成作业怎么办 敏感多疑怎么办很痛苦 老年人脾气越来越古怪怎么办 村委会不给盖章怎么办 普通发票超过3万怎么办 仔猪不吃食消瘦怎么办 猫怀孕不吃东西怎么办