2016-02-16 318 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