Не читает миллисекунду правильно - PullRequest
1 голос
/ 03 мая 2020

Итак, я извлекаю данные из API OpenWeatherMap, и все шло хорошо, пока я не вернул время восхода и захода солнца для Омахи, штат Небраска. Я просмотрел предыдущие посты здесь и использовал их в качестве ссылки, например, один, использующий класс TimeUnit, который все еще отключен в моем случае, и те, которые используют Date / SimlpeDateFormatter, но кажется, что они выводят почти в одно и то же время. Метод преобразования этих времен может показаться мне правильным, но времена, в которые они преобразованы, не таковы. Есть определенный метод, который я должен использовать, чтобы преобразовать их, или я делаю что-то не так с текущим методом, который я использую?

Методы, которые получают время в миллисекундах

public String getSunrise() {
    valueString = main.substring(main.indexOf("\"sunrise\"") + 10, main.indexOf("\"sunrise\"") + 20);
    System.out.println(valueString);
    Long rise = Long.parseLong(valueString);

    Date d = new Date(rise);
    SimpleDateFormat format = new SimpleDateFormat("h:mm a");
    format.setTimeZone(TimeZone.getTimeZone("CDT"));
    String t = format.format(d);

    return t;
}

public String getSunset() {
    valueString = main.substring(main.indexOf("\"sunset\"") + 9, main.indexOf("\"sunset\"") + 19);
    System.out.println(valueString);
    Long set = Long.parseLong(valueString);

    Date d = new Date(set);
    SimpleDateFormat format = new SimpleDateFormat("h:mm a");
    format.setTimeZone(TimeZone.getTimeZone("CDT"));
    String t = format.format(d);

    return t;
}

Консольный вывод методы

1588504675
Sunrise: 9:15 AM
1588555387
Sunset: 9:15 AM

Из текущих данных, которые он извлекает, время должно быть восходом солнца = 6:17 и заходом солнца = 20:23 по этой ссылке: https://openweathermap.org/city/5074472. main - это полная строка JSON.

1 Ответ

2 голосов
/ 03 мая 2020

Методы, принимающие время в миллисекундах : значение в API открытой карты погоды указывается в секундах, а не в миллисекундах. В вашем вопросе 1588504675 относится к 1970 году. Но 1588504675000 - это 3 мая 2020 года (а доля времени - UT C).

...