转自 添加链接描述

//====================================================================
// Declare: gf_dateadd.
//--------------------------------------------------------------------
// 描述:用法同sql的dateadd函数
//--------------------------------------------------------------------
// 参数:
//  string          as_datepart 规定应向日期的哪一部分返回新值的参数
//  long            al_number   增加值
//  datetime        adt_dt
//--------------------------------------------------------------------
// 返回:  datetime
//--------------------------------------------------------------------
// 作者:  YJC     日期: 2019/06/23 11:13:24
//--------------------------------------------------------------------
//  CopyRight(c)
//--------------------------------------------------------------------
// 修改历史:
//
//====================================================================Long    ll_SecondTmp, ll_second, i
Int     li_DaysNum
Time    lt_time
Date    ld_date, ld_dateTmp
String  ls_Date
Constant Long DAYSECOND = 86400 //一天总共 24 * 3600 = 86400 秒 ld_date = Date(adt_dt)
lt_time = Time(adt_dt) CHOOSE CASE as_datepart CASE "year","yy","yyyy" ls_Date = String(year(ld_date) + al_number) + String(ld_date, '-mm-dd') IF NOT IsDate(ls_Date) THEN ls_Date = String(year(ld_date) + al_number) + String(RelativeDate( ld_date, -1 ), '-mm-dd') END IF ld_Date = Date(ls_Date) RETURN DateTime( ld_date, lt_time ) CASE "month","mm","m" ld_dateTmp = Date(String(ld_date, 'yyyy-mm-') + '01') IF al_number < 0 THEN li_DaysNum = Integer(28+Integer(Mid('3'+String(Abs(Sign(Mod(Sign(Mod(Abs(Year(ld_dateTmp)),4))+Sign(Mod(Abs(Year(ld_dateTmp)),100))+Sign(Mod(Abs(Year(ld_dateTmp)),400)),2)) -1))+'3232332323',Month(ld_dateTmp),1))) ld_dateTmp = Date(String(ld_dateTmp, 'yyyy-mm-') + String(li_DaysNum)) END IF FOR i = 1 To abs(al_number) li_DaysNum = Integer(28+Integer(Mid('3'+String(Abs(Sign(Mod(Sign(Mod(Abs(Year(ld_dateTmp)),4))+Sign(Mod(Abs(Year(ld_dateTmp)),100))+Sign(Mod(Abs(Year(ld_dateTmp)),400)),2)) -1))+'3232332323',Month(ld_dateTmp),1))) IF al_number >= 0 THEN ld_dateTmp = RelativeDate( ld_dateTmp, li_DaysNum ) ELSE ld_dateTmp = RelativeDate( ld_dateTmp, 0 - li_DaysNum ) END IF NEXT li_DaysNum = Integer(28+Integer(Mid('3'+String(Abs(Sign(Mod(Sign(Mod(Abs(Year(ld_dateTmp)),4))+Sign(Mod(Abs(Year(ld_dateTmp)),100))+Sign(Mod(Abs(Year(ld_dateTmp)),400)),2)) -1))+'3232332323',Month(ld_dateTmp),1))) ls_Date = String(ld_dateTmp, 'yyyy-mm-') + String(day(ld_date)) IF NOT IsDate( ls_Date ) THEN ls_Date = String(ld_dateTmp, 'yyyy-mm-') + String(li_DaysNum) END IF ld_Date = Date(ls_Date) RETURN DateTime( ld_date, lt_time ) CASE "week","wk","ww" RETURN DateTime( RelativeDate(ld_date,al_number * 7 ), lt_time ) CASE "day","d","dd" RETURN DateTime( RelativeDate(ld_date,al_number), lt_time ) CASE "hour","hh" ll_SecondTmp = al_number * 3600 CASE "minute","mi","n" ll_SecondTmp = al_number * 60 CASE "second","ss","s" ll_SecondTmp = al_number
END CHOOSE ll_second = Hour(lt_time) * 3600 + Minute(lt_time) * 60 + Second(lt_time) ld_date = RelativeDate(ld_date,Integer(ll_SecondTmp/DAYSECOND))
ll_SecondTmp -= Integer(ll_SecondTmp/DAYSECOND) * DAYSECOND If ( ll_second + ll_SecondTmp < 0 ) THEN     //RETURN DateTime(RelativeDate(ld_date,-1),RelativeTime(Time("00:00:00.000"),DAYSECOND + ll_second + ll_SecondTmp)) RETURN DateTime(RelativeDate(ld_date,-1),   Time( String(RelativeTime(Time("00:00:00"), DAYSECOND + ll_second + ll_SecondTmp), 'hh:mm:ss') + '.' + String(lt_time, 'fff')))
END IF If ( ll_second + ll_SecondTmp >= DAYSECOND ) THEN //RETURN DateTime(RelativeDate(ld_date,1),RelativeTime(Time("00:00:00.000"),ll_second + ll_SecondTmp - DAYSECOND)) RETURN DateTime(RelativeDate(ld_date,1), Time( String(RelativeTime(Time("00:00:00"), ll_second + ll_SecondTmp - DAYSECOND), 'hh:mm:ss') + '.' + String(lt_time, 'fff')))
END IF //RETURN DateTime( ld_date, RelativeTime( lt_time, ll_SecondTmp ) )
RETURN DateTime( ld_date, Time( String(RelativeTime( lt_time, ll_SecondTmp ), 'hh:mm:ss') + '.' + String(lt_time, 'fff')) ) 

PB PB时间加减函数,支持年月日时分秒的加减。相关推荐

  1. html隔几秒显示当前时间,用js实现每隔一秒刷新时间的实例(含年月日时分秒)

    原理:使用定时器,即setInterval(fn,i),每隔i秒执行fn. 下面给出具体的代码 1.代码如下: 用js实现每隔一秒刷新时间(含年月日时分秒) #time{background:#33F ...

  2. 动态判断时间插件显示到年月日时分秒

    根据得到的时间格式,动态判断时间插件显示到年月日时分秒 主要split切割字符串来判断 split将一个字符串切割为字符串数组 <!DOCTYPE html> <html>&l ...

  3. QT QDateTime获取当前时间且分出年月日时分秒

    QT QDateTime获取当前时间且分出年月日时分秒 前言 才发现自己都不知道怎么在QT里获取当前时间,为了以后忘了要用到,就直接记录下来吧 需要用到的是QDateTime这个类 获取当前时间 首先 ...

  4. java date加一天_Java日期时间API系列15-----Jdk8中API类,java日期计算2,年月日时分秒的加减等...

    通过Java日期时间API系列8-----Jdk8中java.time包中的新的日期时间API类的LocalDate源码分析 ,可以看出java8设计非常好,实现接口Temporal, Tempora ...

  5. android 字符串 时间格式化,Android 获取年月日时分秒 格式化指定时间字符串

    1.获取Android系统当前时间年月日 时分秒(24小时制) //获取当前时间 Time time=new Time(); time.setToNow(); Log.i("cp" ...

  6. Vue.js 手机端H5,时间选择器实现:年月日时分秒、年月日时分、年月日时、年月日、年月、年、月、日、时、分、秒,时分秒、时分多种类型

    目录 一.效果查看 时间选择器实现效果视频 二.目录 三.index.vue <template><div><date-picker keys="0" ...

  7. android 如何获得时间格式,Android 获取年月日时分秒 格式化指定时间字符串

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 1.获取Andro ...

  8. datepick二格式 化时间_My97DatePicker设置日期年月日时分秒格式

    前端 JavaScript 日期插件 My97DatePicker 非常出名.N多年以前我就使用过,当时下载了之后,使用的时候默认是没有小时,分钟,秒之类的,直接是年月日的日期格式,跟一般的日期插件没 ...

  9. 利用To_Char()函数从Oracle时间中分别提取年月日时分秒

    转自:https://blog.csdn.net/yhrch/article/details/1791418 TO_CHAR('2007-1-2','yyyy')转换结果为"2007&quo ...

最新文章

  1. CentOS 7下源码编译安装新版本内核
  2. 每天工作四小时的程序员-转
  3. PHP安装包中VC9和VC11的含义
  4. 【资源总结】国内AI领域的赛事全集
  5. js input点击事件_Vue.js的旅程,简单的todo实例「602」
  6. 架构师之路 扩充字段_扩大您作为设计师的业务影响力的四个基础
  7. 我的世界一个程序导致JAVA,Java地位无可动摇的12个原因
  8. 第二章 数据的表示和运算 2.1.3 字符与字符串 [计算机组成原理笔记]
  9. 注意力机制--转载自我的学生隆兴写的博客
  10. java是一种,java是一种编译程序吗
  11. php缓存页面,PHP缓存页面函数的简单示例
  12. Altium Designer(三):基础
  13. 企业组织形态及财务报表
  14. python画图小猪佩奇_用Python代码画小猪佩奇 Python简直太神奇了
  15. 淘宝大数据,打假新武器
  16. 看小姐姐用动图展示 10 大 Git 命令
  17. 完善保密加密机制(Perfectly-secret Encryption)——无条件安全加密算法
  18. 图灵交互设计丛书《简约至上.交互式设计四策略》
  19. mysql设置bufferpool_mysql修改buffer_pool大小
  20. 维度建模——维度建模与数据仓库概述

热门文章

  1. 一套鼠标键盘控制多台电脑,无界鼠标 (Mouse without Borders)控制界面的功能翻译
  2. 关于控制流技术实验报告
  3. 使用cmd命令在桌面上新建一个文件夹,且在文件夹中新建一个.java文件,使用cmd命令实现.java文件的编译运行
  4. 5 统计英文单词个数
  5. 统计文段中英语单词数量
  6. Arduino学习笔记—Arduino编程基础
  7. 小程序微信支付接口php,微信小程序微信支付接入开发
  8. [中英文对照]常见大学课程名称翻译
  9. pmp项目组织结构类型——职能型
  10. 时间判断,当前是上午还是下午