2015-05-18 42 views
3

我正在開發基於SMS的應用程序。當我的應用程序啓動時,我從數據庫中選擇最後一條消息的日期時間並將其發送到服務器,然後使用日期時間>最後消息日期時間返回所有消息,但因爲應用程序和服務器可能不是在同一時區,我無法得到正確的結果。解決這個問題的最好方法是什麼?請幫忙。謝謝。如何解決iOS objective-c時區問題?

這個問題是update SQLite with content of push notification when the app is not running的後續。

+0

將時間轉換爲UTC。 –

+0

可以日期轉換爲一個時間間隔,發送時間間隔服務器 –

回答

2

其中一個選項是將服務器上的UTC/GMT時間戳存儲起來,並且當您從服務器獲取日期時,使用格林威治標準時間格式將其轉換爲本地日期對象,然後將用戶顯示爲其本地時區格式化。即。

  1. 在服務器上以UTC/GMT格式存儲日期。
  2. 獲取日期字符串中的應用程序,使用NSDateFormatter與GMT/UTC的時區將其與本地時區轉換爲NSDate對象在Objective-C
  3. 使用NSDateFormatter展示給用戶。

記住的NSDate既有日期時區的獨立,因此呈現給用戶時,使用任何NSDateFormatter將其轉換爲本地或任何時區。

1

當您從數據庫中選擇日期時間然後將其發送到服務器時,請先將系統的時區轉換爲服務器的時區。

0

爲了弄清楚這個問題。您需要遵循以下步驟。

步驟1:始終保持服務器的時區在UTC。

步驟2:一旦你需要的日期時間發送給服務器。首先需要將其轉換爲UTC,然後發送到服務器,以便服務器存儲它。

第3步:從服務器獲取日期時間時,您需要將其轉換爲相應的時區。你現在在哪裏。就像我使用印度的應用程序一樣,那麼我會在服務器接收日期時加上+5:30。所以所有的國家都一樣。

希望對你有所幫助