datetime - 解析短信日期/时间

标签 datetime sms at-command

我正在使用 AT 命令读取短信,就像 this tutorial 中一样。当我阅读这些消息时,我想知道这些短信有多“老”。 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 的时间?来自法国短信中心?如何将它们转换为 UTC,以可靠地计算从 SMS 发送(到达 SMSC)到我阅读的那一刻所耗时?

并不是真的在这里寻找具体实现的答案,但如果重要的话,我会在 shell 脚本中进行数学计算

最佳答案

这个答案证实了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 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 的答案一致,我没有理由怀疑它的正确性。

关于datetime - 解析短信日期/时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35428719/

相关文章:

java - Spring Roo 最佳实践显示本地时间日期

python - 从 apache/nginx 用户 id cookie 中提取日期

Python:将复杂的日期和时间字符串转换为时间戳

收到 Android 短信,仅针对某些消息中止广播

java - 为什么我收到 "UnsatisfiedLinkError: no SolarisSerialParallel in java.library.path"

c# - 如何在 C# 中使用 ATD 命令 GSM 调制解调器获取用户响应

Php 信息显示不正确的默认时区(UTC)

ios像android一样通过短信验证

serial-port - ^SMMEMFULL :"RAM"HUAWEI K2540 加密狗错误信息

vb.net - 串口读取包括vb.net中已经写入的内容