解析短信 date/time

Parsing an SMS date/time

我正在使用 AT 命令阅读短信,就像 this tutorial 中一样。当我阅读消息时,我想知道这些短信是如何 "old" 的。短信中包含短信中心收到短信的信息,明文为:

+CMGL: 1,"REC UNREAD","+85291234567",,"07/02/18,00:05:10+32"
Reading text messages is easy.

我应该如何解析这个 "07/02/18,00:05:10+32"?我的意思是,+32 是什么意思?它不能与 UTC 相差 32 小时。

此外,如果从日本发送 SMS 到法国,列出 SMS 时显示的时间是几点?来自日本 SMSC 的时间?来自法国 SMSC?我如何将它们转换为 UTC 以可靠地计算从 SMS 发送(到达 SMSC)到我阅读它所经过的时间?

并不是真的要在这里寻找特定于实现的答案,但如果重要的话,我会在 shell 脚本

中进行计算

表示以刻钟为单位的偏移量。

本文link将帮助您解决问题。

http://www.developershome.com/sms/cmgsCommand2.asp

此致,

这个答案证实了 ,但展示了如何使用权威参考而不是依赖随机网页(有些很好,但很多不是)得出相同的结论。链接网页上的文字没有错,但它只是关于 AT+CMGS 命令而不是这里询问的 AT+CMGL 命令,所以你必须 guess/assume 它们是相同的格式这不是一个好方法。


描述 AT+CMGL 命令的文档是 27.005 标准(或您的调制解调器制造商自己的特定产品文档)。它将语法定义为

+CMGL: <index>,<stat>,<oa/da>,[<alpha>],[<scts>][,<tooa/toda>,<length>]
<CR><LF><data>

<scts>定义为

3GPP TS 23.040 [3] TP-Service-Centre-Time-Stamp in time-string format (refer <dt>)

<dt>定义为

3GPP TS 23.040 [3] TP-Discharge-Time in time-string format: "yy/MM/dd,hh:mm:ss±zz", where characters indicate year (two last digits), month, day, hour, minutes, seconds and time zone. E.g. 6th of May 1994, 22:10:00 GMT+2 hours equals to "94/05/06,22:10:00+08"

此时我没有费心去深入研究 23.040 规范,因为示例中的 2 <==> 8 关系与 eBusians 的回答一致,我没有理由怀疑它的正确性。