Время Unix от API до нормального формата - PullRequest
0 голосов
/ 28 декабря 2018

Я использую openweathermap для своего приложения https://openweathermap.org/current, и мне нужно ввести текущее время с погодой в городе.

Время в API в формате UNIX.Как я могу ввести время в приложении в обычном формате (ч: м: с)

Строка с датой / временем из API (dt .... Время расчета данных, Unix, UTC)

Ниже моего кода JS

    document.querySelector('#city').addEventListener('keyup', function(e) {
  if (e.keyCode === 13) {

        var city = $(this).val();
        if (city !== '') {

            $.ajax({

                url: 'http://api.openweathermap.org/data/2.5/weather?q=' + city + "&units=metric" +
                    "&APPID=bb037310921af67f24ba53f2bad48b1d",
                type: "GET",
                dataType: "json",
                success: function (data) {
                    var widget = show(data);

                    $("#show").html(widget);

                    $("#city").val(' ');

                }

            });

        } else {
            $("#error").html("<div class='alert alert-danger text-center'><a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>Field cannot be empty</div>");
        }

    };
});


function show(data) {
    return "<h2>Current Weather for " + data.name + "," + data.sys.country + "</h2>" +
    "<h3><strong>Wind Speed</strong>: " + data.dt + "</h3>" +
        "<h3><strong>Weather</strong>: <img src='http://openweathermap.org/img/w/" + data.weather[0].icon + ".png'>" + data.weather[0].main + "</h3>" +
        "<h3><strong>Description</strong>: " + data.weather[0].description + "</h3>" +
        "<h3><strong>Temperature</strong>: " + data.main.temp + "&deg;C</h3>" +
        "<h3><strong>Pressure</strong>: " + data.main.pressure + "hPa</h3>" +
        "<h3><strong>Humidity</strong>: " + data.main.humidity + " %</h3>" +
        "<h3><strong>Min. Temperature</strong>: " + data.main.temp_min + "&deg;C</h3>" +
        "<h3><strong>Max. Temperature</strong>: " + data.main.temp_max + "&deg;C</h3>" +
        "<h3><strong>Wind Speed</strong>: " + data.wind.speed + "m/s</h3>" +
        "<h3><strong>Wind Direction</strong>: " + data.wind.deg + "&deg;</h3>";

}

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Если вы хотите разрешить пользователю вводить некоторую дату + время в локальном формате и получать для него метку времени UNIX, вы можете использовать Date.parse(), просто он возвращает миллисекунды, пока вам нужны секунды, поэтому разделите результат на 1000. (Базовая дата + время одинаковы для обоих, 1970 г. 1 января. 00:00:00 UTC)

function doConvert(event){
  unix.textContent=Math.round(Date.parse(event.target.value)/1000);
}
<input type="datetime-local" onchange="doConvert(event)"><br>
<div id="unix"></div>

Если вы имеете в виду обратное (время чтения в UNIX), используйте Date() (не забудьте преобразовать секунды в миллисекунды) и toLocaleString():

function doConvert(event){
  time.textContent=new Date(event.target.valueAsNumber*1000).toLocaleString();
}
<input type="number" oninput="doConvert(event)"><br>
<div id="time"></div>
0 голосов
/ 28 декабря 2018

UnixTime = https://en.wikipedia.org/wiki/Unix_time

var UnixTime = 1525478400; 
var myDate = new Date(UnixTime*1000);
var HH = myDate.getHours(); 
var MM = myDate.getMinutes();
var SS = myDate.getSeconds();
document.write(HH+":"+MM+":"+SS);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...