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

来源:互联网 发布:nars和mac哪个好用 编辑:程序博客网 时间:2024/05/17 23:57
 10个用一条语句写成的有关日期函数可以直接赋值给变量,不用写成函数形式的。另函数适用于pb6.5,一个汉字占两个字节,如果用于pb8.0以上请根据实际情况修改题外话:我只不过想用最基本的syntax巧妙的完成一些功能,仅是为了玩syntax而写了这些函数,这些syntax可以很容易的被移植到其它的编程语言中,如果你的编程系统中已经有类似功能的系统函数,建议你使用系统函数,提高效率,呵呵。我只是空下来无聊的时候,写一些机灵古怪的语法,或者写一些以后自己也看不懂的算法来解闷,呵呵。我一直把编写代码作为乐趣,作为艺术看待,喜欢把代码写的简洁古怪,让别人也让自己看不懂。:) //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):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)//8.另一个求某月天数(日期参数:date ls_date  返回参数:int):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))//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)  
 
原创粉丝点击