回复:WINCC 用C脚本实现时间加法的编程

已锁定

城外之人

版主

  • 帖子

    8685
  • 精华

    18
  • 被关注

    218

论坛等级:至圣

注册时间:2003-09-23

钻石 钻石 如何晋级?

发布于 2025-03-03 09:45:26

3楼

用DeepSeek得到的答案:

struct tm dateAdd(const char interval, int number, struct tm baseDate) {
struct tm result = baseDate;
switch (interval) {
case 'y': result.tm_year += number; break;
case 'm': result.tm_mon += number; break;
case 'd': result.tm_mday += number; break;
case 'w': result.tm_mday += 7 * number; break;
case 'h': result.tm_hour += number; break;
case 'n': result.tm_min += number; break;
case 's': result.tm_sec += number; break;
default: // 处理错误
}
mktime(&result);
return result;
}

1、将基准日期转换为struct tm结构。

2、根据interval参数调整对应的字段:

'y':tm_year += number

'm':tm_mon += number

'd':tm_mday += number

'w':tm_mday += 7 * number

其他如小时、分钟、秒类似。

3、使用mktime()将struct tm转换为time_t,这会自动调整日期到有效范围。

4、将调整后的time_t转换回struct tm,得到最终的日期。注:struct tm在传递给mktime()时,可能需要先将其转换为本地时间(localtime())


无论成与败,无论甜与苦,我还是我。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32566条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。