2016-03-07 109 views
0

我正在構建一個查詢OpenWeatherMap API的Android應用程序。大多數情況下,一切運作良好。問題是我計算Feed提供的unix時間戳。時間戳根據GMT設置。因此,如果您住在倫敦,並查看下面的json飼料以瞭解當前東京的天氣情況,那麼您會因爲輸出顯示Sunrise(unix value 1457298145)= Sun,2016年3月6日21:02:25提供誤導性的「Sunrise」信息GMT。日出根據格林尼治標準時間或倫敦時間設置。我如何根據目標城市(東京)當地時間而不是格林威治標準時間使用下面的Feed計算日出?這可能實現這與下面的json飼料?用戶可以選擇世界上任何城市獲取當前天氣信息。面臨的挑戰是根據用戶用Java以編程方式選擇的城市提供日出信息。計算各個時區的Unix時間戳

東京目前的天氣頻道:

http://api.openweathermap.org/data/2.5/weather?id=1850147&appid=44db6a862fba0b067b1930da0d769e98 

供稿響應:

{ 
    "coord": { 
    "lon": 139.69, 
    "lat": 35.69 
    }, 
    "weather": [ 
    { 
     "id": 500, 
     "main": "Rain", 
     "description": "light rain", 
     "icon": "10n" 
    } 
    ], 
    "base": "cmc stations", 
    "main": { 
    "temp": 285.91, 
    "pressure": 1026.25, 
    "humidity": 97, 
    "temp_min": 285.91, 
    "temp_max": 285.91, 
    "sea_level": 1030.08, 
    "grnd_level": 1026.25 
    }, 
    "wind": { 
    "speed": 1.17, 
    "deg": 174.003 
    }, 
    "rain": { 
    "3h": 0.1475 
    }, 
    "clouds": { 
    "all": 56 
    }, 
    "dt": 1457361634, 
    "sys": { 
    "message": 0.0048, 
    "country": "JP", 
    "sunrise": 1457298145, 
    "sunset": 1457340136 
    }, 
    "id": 1850147, 
    "name": "Tokyo", 
    "cod": 200 
} 

我應該創建什麼方法使

public static String getSunriseTime(int timeStamp) { 
    //What should I do here with the info from the feed above? 
    } 

回答

0

你只需要設置的時區java日曆對象到東京,或其他。以下片段適用於我:

import java.util.Calendar; 
import java.util.GregorianCalendar; 
import java.util.TimeZone; 

class Xxx { 
    public static void main(String[] args) { 
     Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("Asia/Tokyo")); 
     calendar.setTimeInMillis(1457298145 * 1000L); 
     System.out.println(calendar.toString()); 
    } 
}