2016-02-16 200 views
1

我正在使用AT命令读取SMS,就像在this tutorial中那样。当我阅读邮件时,我想知道这些短信是多么“古老”。在该短信是由SMSC接收到的信息包含在短信中,纯文本:解析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

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


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

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

而且<dt>以时间串被定义为

3GPP TS 23.040 [3] TP-放电时的语法

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

而且<scts>格式: “yy/MM/dd,hh:mm:ss±zz”,其中字符表示年份(两个最后的 数字),月份,日期,小时,分钟,秒和时区。例如。 1994年5月6日 ,22:10:00 GMT +2小时等于 “94/05/06,22:10:00 + 08”

在这一点上,我没有刻意去深入挖掘23.040规范作为2 < ==> 8这个例子中的关系与eBusians的答案一致,我没有理由怀疑它的正确性。

+0

感谢您的详细解答和参考。似乎时区是在几个小时内指定的 – remi