找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
问题
取消精华
首页精华问答
取消推荐
高端用户推荐
申请置评
已申请置评
修改
修改标签
添加标签
官方认证
取消官方认证
修改标签
添加标签
转移分类
删除
{{itemCategory}}
收藏({{answerDetail.Q_FavoriteCounts}})
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
专家建议
取消最佳答案
修改
在C语言中,time_t是一种用于表示时间的数据类型,其定义和特性如下:
基本定义:
time_t是C标准库中定义的类型别名,通常表示自1970年1月1日00:00:00(UNIX纪元)以来的秒数。其具体实现是平台相关的,但一般为长整型(long)或其他算术类型。
精度与范围:
32位系统:最大表示到2038年1月19日03:14:07(即“2038年问题”)。
64位系统:可表示到更远的日期(如公元2920亿年后)。
WINCC 的 ANSI C 脚本编译环境确实是基于 32 位架构的?。这主要源于其历史兼容性和所支持的旧版操作系统(如 Windows 7 32 位)的限制。
关于 time_t 的 2038 年溢出问题(即 2038 年 1 月 19 日 03:14:07 UTC 后,32 位 time_t 会回绕到 1901 年),可通过以下方案解决:
一、系统环境升级(推荐)
1、迁移到 64 位操作系统与新版 WINCC
WINCC V7.5 及以上版本已原生支持 64 位 Windows 10/Server 2016 等系统。
64 位环境下,time_t 通常为 64 位,可覆盖约 2900 亿年的时间范围,彻底规避 2038 问题。
二、编程适配方案
若受限于环境无法升级,需修改脚本逻辑:
避免直接使用 time_t
改用 SYSTEMTIME 结构体(WINCC 内置类型):
SYSTEMTIME stTime;
GetLocalTime(&stTime); // 获取当前时间
该结构包含年、月、日等独立字段,无溢出风险。
等您来回答
换一换
{{item.CoinValue}}西币
{{item.VisitNum}}人想问
本版相关问题
换一换
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!

西门子商城