当前位置: 首页 > article >正文

一些时间日期函数,转自华软

可以直接赋值给变量,不用写成函数形式的。另函数适用于pb6.5,一个汉字占两个字节,如果用于pb8.0以上请根据实际情况修改

//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)))

13 PB中 DaysAfter ( date1, date2 ) 只能返回日期类型相差天数,SecondsAfter ( time1, time2 )只能返回时间相差妙,没有真对日期时间类型的函数,可以用下面一条语句实现:

lont ll_allseconds

datetime ldt_bgn,ldt_end

ll_allseconds=(daysafter(date(ldt_bgn),date(ldt_end))*86400+SecondsAfter(time(ldt_bgn),time(ldt_end)))

http://www.lryc.cn/news/2416597.html

相关文章:

  • Java 程序员新机必备程序清单
  • C语言的字节对齐
  • 前端必知必会-CSS布局display属性
  • 一篇文章搞懂RAID磁盘阵列
  • Delphi编程---可以进行四则运算的Tcalc类源代码
  • tftpd32+ tftpd64文件传输安装和使用教程【图文并茂】
  • 学生信息管理系统模块ExecuteSql 函数详解
  • 属性PropertyInfo的使用
  • 航天器状态(位置速度)转轨道六根数
  • EPon F4503.0作为交换机使用废旧光猫中国电信光猫改交换机功能作为无线wifi或者交换机使用天翼网关中兴ZXHN免拆机获取破解超级管理员密码
  • AT24C04 eeprom读写测试
  • hotstuff共识算法总结
  • 初学者如何制作一个简单的HTML个人网页
  • IEEE1394(火线)接口全面了解
  • Freemaker指令总结
  • 文本处理正则表达式:grep
  • MySQL字符集的设置
  • C语言“学生信息管理系统”功能详解及代码展示2023级慕课版
  • go二维map_记一次坑爹的golang 二维map判断问题
  • Android Studio 代码混淆(你真的会混淆吗)
  • JSP基于web仓库管理系统v83k3(程序+源码+数据库+调试部署+开发环境)
  • RISC架构
  • 多线程编程java_java多线程编程
  • 递归调用栈溢出问题分析与解决
  • C#的Winform多语言实现(resx文件)
  • 电脑时间老是重置?一招教你轻松解决!
  • 黑色主题个人主页HTML源码
  • 印度电影推荐
  • 教您如何使用WebMatrix创建第一个网页
  • 网络安全笔记-信息安全工程师与网络安全工程师考试大纲(附:Web安全大纲)