@be2clack
Дизайнер

Как получить только время с json api?

Здравствуйте, помогите получить правильно время с

https://ws.audioscrobbler.com/2.0/?method=user.get...

Беру так:

<script>
// last.fm user get recent tracks
// docs: https://www.last.fm/api/show/user.getRecentTracks

$.getJSON("https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=tumarfm&api_key=0a1d291e241f00167608af030298c212&format=json", function (data) {
    $.each(data["recenttracks"]["track"], function (key, value) {
        var song = value["name"];
        var artist = value["artist"]["#text"];
        var date = value["date"]["#text"];

        var html = "<li>";
        html += "<a href=\"#\"></span>";
    		html += "<b>" + song + "</b>";
    		html += "<br/>" + artist + "</a>";
        html += "</li>";
        
        $("#results").append(html);
    });
})
// Errors are your friend!.. Use them..
.error(function (jqXHR, textStatus, errorThrown) {
    console.log("error " + textStatus);
    console.log("error throw " + errorThrown);
    console.log("incoming Text " + jqXHR.responseText);
}) // End of .error
.complete(function () {
    console.log("complete");
});
</script>


В итоге получаю формат даты - "2 Sep 2018, 10:48"
Как получить только время? + в другом часовом поясе ? например часовом поясе +6
а еще лучше, как эту дату превратить в виде "3 минуты назад" например
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Там в поле date возвращается помимо поля #text ещё поле uts – unix timestamp. Удобнее использовать его. Вместо var date = value["date"]["#text"]; как-то так:
var date = new Date(1000 * parseInt(value["date"]["uts"])); // дата-время из трека
var now =  new Date(); // сейчас
// теперь сравнивайте две даты
var diff = Math.floor((now - date) / 1000); // прошло секунд
var when = '';
if( diff < 3600) {
  when = '' + Math.floor(diff / 60) + ' минут назад';
} else if( diff < 86400) {
  when = '' + Math.floor(diff / 3600) + ' часов назад';
} else if( diff < (7 * 86400)) {
  when = '' + Math.floot(diff / 86400) + ' дней назад';
} // ...  и так далее
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@dimkaholodov
Получай так как есть, потом подгоняй - https://habr.com/post/132654/
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы