解决组态王HTConvertTime()函数到2020年报错的方法 点击:2556 | 回复:7



zhongxxx

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:10帖 | 20回
  • 年度积分:20
  • 历史总积分:283
  • 注册:2007年1月02日
发表于:2020-01-09 19:49:56
楼主

HTConvertTime()

此函数将指定的时间格式(年,月,日,时,分,秒)转换为以秒为单位的长整型数,转换的时间基准是UTC(格林尼治)1970年1月1日00:00:00。例:北京为东八区,那么转换的时间基准为1970 年1月1日8:00:00。语法使用格式:
    HTConvertTime(Year,Month,Day,Hour,Minute,Second);
参数:
    Year:年,整型,此值必须介于1970和2019之间
    Month:月,整型,此值必须介于1和12之间
    Day:日,整型,此值必须介于1和31之间
    Hour:小时,整型,此值必须介于0和23之间
    Minute:分钟,整型,此值必须介于0和59之间
    Second:秒,整型,此值必须介于0和59之间
返回值:整型  


以上是函数帮助文档中的解释,年份在1970和2019之间。那现在2020年怎么办,官方自然有解决办法,但我的性子急,等不了。索性就自己写一个,简单有效。话不多说,上代码。

第一步,新建自定义函数。

myHTConvertTime(long y,long m,long d,long h,long mi,long s)

第二步,代码如下。

//

long var=0;//总天数

long m2=0;//2月份的天数


//不同的年份需要定义一下,2月份的天数,以此类推

if(y==2020)   m2=29;

if(y>2020 && y<2024) m2=28;


if(y>2020)var = var + 366;//2020年有366天

if(y>2021)var = var + 365;//2021到2023年有355天

if(y>2022)var = var + 365;

if(y>2023)var = var + 365;

//按此规律依次添加更多的年份,一年天数和2月天数查万年历

//下面的代码固定,不用修改

if(m >1)var = var +  31;

if(m >2)var = var +  m2;

if(m >3)var = var +  31;

if(m >4)var = var +  30;

if(m >5)var = var +  31;

if(m >6)var = var +  30;

if(m >7)var = var +  31;

if(m >8)var = var +  31;

if(m >9)var = var +  30;

if(m >10)var = var +  31;

if(m >11)var = var +  30;

long df =(( (var + d -1) * 24 + h) * 60 +mi) *60 + s + 1;

long th = HTConvertTime(2019,12,31,23,59,59);//计算之前的秒数


long ti = df+th;

return ti;


第三步,确定完成。

第四部,引用就可以了。

图就不上了,其实仔细想想挺简单,发出来与大家一起分享。有事没事联系我。秋秋。3-746-69-416



楼主最近还看过



往后@余生

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 5回
  • 年度积分:0
  • 历史总积分:110
  • 注册:2019年9月16日
发表于:2020-01-14 16:45:31
1楼

谢谢,现场测试好用!可以读取2020年之后的数据。但是2020年之前的数据查不到。

在报表查询命令里添加一个if函数,在2020年以前使用原HTConvertTime函数,2020年之后使用myHTConvertTime,这样就可以保证可以查询到2020年之前的数据。


西伯利亚狼

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 239回
  • 年度积分:3
  • 历史总积分:185
  • 注册:2017年3月14日
发表于:2020-01-16 13:52:35
2楼

很好  学习了   强大!!!

zhongxxx

  • 精华:1帖
  • 求助:0帖
  • 帖子:10帖 | 20回
  • 年度积分:20
  • 历史总积分:283
  • 注册:2007年1月02日
发表于:2020-01-30 09:49:25
3楼


回复内容:

对: 往后@余生 谢谢,现场测试好用!可以读取2020年之后的数据。但是... 内容的回复!

-------------------------

的确是疏忽了,没有考虑到,感谢!

Alan Lee

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 29回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2019年6月05日
发表于:2020-02-24 08:22:05
4楼

很好  学习了   强大!!!

浮光微尘

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 30回
  • 年度积分:0
  • 历史总积分:59
  • 注册:2019年7月31日
发表于:2020-02-28 21:53:11
5楼

很牛,试过了,确实可行!加上条件2019年以前的也可以了,多谢多谢!

陈晨88

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 101回
  • 年度积分:0
  • 历史总积分:2310
  • 注册:2017年10月27日
发表于:2020-04-10 09:54:11
6楼

很好  学习了   强大!!!


夏晚01

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 60回
  • 年度积分:0
  • 历史总积分:173
  • 注册:2020年4月18日
发表于:2020-04-18 17:02:09
7楼

谢谢分享,已经用了


热门招聘
相关主题

官方公众号

智造工程师