This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/SIMPLELINK-CC3220-SDK:时区问题/设置时间

Guru**** 2560390 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/671730/compiler-simplelink-cc3220-sdk-problems-with-timezones-setting-time

器件型号:SIMPLELINK-CC3220-SDK

工具/软件:TI C/C++编译器

您好!

我很难尝试设置时区和/或从 SNTP 获取 UTC 读数的时间(并按此进行存储)。  我认为 gmtime()和 localtime()返回错误的读数。  我确实使用了 SNTP getTime(),使用 clock_settime (clock_realtime)设置系统时间,然后检查 gmtime()和 localtime(),如果不接触任何内容,则使用 strftime (localtime (time (NULL)))和 strftime (gmtime (time (NULL))))打印时会得到值;

-在本地时间显示 UTC

-显示未来 gmtimate()中的值减6小时

写入_tz (这是设置时区的正确方法吗?) 似乎影响 localtime()(如预期)和打印时区(否则为"cSt ")。  将_tz.timezone 设置为0将使 locatime()和 gmtime()匹配,但结果为 off (未来为6小时)。  我使用以下命令设置检索时间并进行打印:

uint64_t ntpts;
int rval = SNTP getTime (NULL、0、NULL、ntpts);
如果(rval = 0){
// 1900到1970的秒偏移为2208988800 
// floor (1e9/2**32)=15258 to scale 无符号小数=((ntpts &((1ul << 32)- 1))* 15258ull)>> 16; struct timespec ts ={ .tv_sec =(ntpts >> 32)- 2208988800ul、 .tv_nsec =小数 }; Clock_settime (clock_realtime、&ts); } char buf[64]; time_t = time (NULL); /*可以是-1、应检查*/ //没有任何分割的第二个区域,并且无法打印该区域? strfttime (buf、sizeof (buf)、"%Y-%m-%dT%H:%M:%S %Z"、gmtime (&t)); PUT (buf); strfttime (buf、sizeof (buf)、"%y-%m-%dT%H:%M:%S %Z"、localtime (&t)); PUT (buf);

是否有办法正确设置时区(我可以在 UTC 的所有工作中使用!)  BTW、对于 TLS 套接字、我是否需要将网络处理器的时间设置为(sl_DeviceSet)、以及应该在那里使用什么时间(gmtime/localtime /某些特定时区?)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不熟悉函数 SNTP getTime 及其应如何与编译器 RTS 时间函数交互。  我怀疑文章 时间和时钟 RTS 函数 会有所帮助。  epoch 上的部分以及您如何更改它看起来很有用。  我怀疑改用较新的1970年代将会简化事情。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    SNTP_getTime()仅从1.1970 UTC 检索64位时间戳(秒+小数秒)。 宏的 epoch 更改确实完成了一些操作、但是现在我在从网络处理器中检索它之前确实获得了时间戳、因此我假设它是从主机读取的(目前在 CCS 下运行此操作)。 现在我不确定我运行的代码是否正确(这需要等待。)

    感谢链接、我想我将在任何情况下使用64位函数!

    (对于 TLS 部分:AFAIK 仅使用时间在开始时设置随机 cookie、这不是协议本身的一部分。 目前、通过在秒数中添加21600魔法偏移6 h 来绕过这个问题、这有点难看、可能会在稍后咬我。)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可能应该提供函数时间的自定义实现。  在自 定义时钟和时间函数一文中的最后一个示例中对其进行建模

    谢谢、此致、

    乔治