解析短信日期/时间

时间:2016-02-16 09:34:59

标签: datetime sms at-command

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

+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小时。

此外,如果发送短信,例如从日本发送到法国,那么在列出短信时显示的小时数是多少?来自日本SMSC的小时?来自法国的SMSC?如何将它们转换为UTC以可靠地计算从发送SMS(到达SMSC)到我读取它的那一刻所经过的时间?

这里并没有真正寻找特定于实现的答案,但如果重要,我将在shell脚本中进行数学运算

2 个答案:

答案 0 :(得分:2)

它代表一个小时的偏差。

此链接可帮助您解决问题。

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

此致

答案 1 :(得分:2)

这个答案证实了eBusians's answer,但展示了如何使用权威参考而不是依赖随机网页得出相同的结论(有些是好的,但很多都不是)。链接网页上的文字不正确,但它只是关于AT + CMGS命令而不是这里要求的AT + CMGL命令,所以你必须猜测/假设它们是相同的格式而不是好方法。

描述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-time-string格式:   “yy / MM / dd,hh:mm:ss±zz”,其中字符表示年份(最后两个   数字),月,日,小时,分钟,秒和时区。例如。 6日   1994年5月22:10:00 GMT + 2小时等于“94/05 / 06,22:10:00 + 08”

此时我并不打算深入研究23.040规范中的2&lt; ==&gt;示例中的8个关系与eBusians的答案一致,我没有理由怀疑它的正确性。