我正在构建一个用于查询OpenWeatherMap API的安卓应用程序。在大多数情况下,一切都很顺利。问题是当我计算提要提供的unix时间戳时。时间戳是根据格林尼治标准时间设置的。因此,如果你住在伦敦,在下面查看东京的天气状况,你会给出误导的“日出”信息,因为输出结果显示日出(unix值1457298145) = Sun,2016年3月6日21:02:25格林尼治标准时间。日出是根据格林尼治时间或伦敦时间安排的。我怎么能用下面的数据来根据目标城市(东京)的当地时间而不是格林尼治时间计算日出呢?这有可能通过下面的json提要来实现吗?用户可以选择世界上任何城市的当前天气信息。现在的挑战是根据用户在Java中以编程方式选择的城市提供日出信息。
东京当前天气预报:
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?
}发布于 2016-03-07 16:50:38
您只需将java Calendar对象的时区设置为东京或其他什么。以下片段适用于我:
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());
}
}https://stackoverflow.com/questions/35847689
复制相似问题