Я пытаюсь преобразовать временную метку unix в удобочитаемое время. Я пробовал все решения, которые я могу найти, ни один из них не работает. Я не хочу использовать какие-либо модули или фреймворки. Id ценят некоторую помощь в преобразовании. (Угловая) Пожалуйста, не связывайтесь с другими вопросами. Я читаю их все. Thnk вы
var unix = Math.round(+new Date()/1000);
console.log(unix) //works
function secondstotime(unix)
{
var t = new Date(1970,0,1);
t.setSeconds(unix);
var s = t.toTimeString().substr(0,8);
if(unix > 86399)
s = Math.floor((t - Date.parse("1/1/70")) / 3600000) + s.substr(2);
console.log(s);
}
secondstotime();
В angularjs вы можете просто использовать фильтр даты для преобразования временной отметки Unix (в секундах). Вам просто нужно умножить временную метку Unix на 1000, чтобы сделать ее миллисекундной меткой времени. Вот код
<p>{{1469424998 * 1000 | date:'hh:mm:ss'}}</p>
или вы можете использовать некоторую внешнюю библиотеку, например mommentjs, для преобразования Unix Timestamp (в секундах) в datetime, как это
var day = moment.unix(1469424998);
console.log(day.format("hh:mm:ss"));
Надеюсь, это поможет
Вопрос не ясен. В текущем коде он печатает следующий результат:
1469424998
Invalid
Он печатает Invalid
поскольку отсутствует параметр метода secondstotime()
. Если вы добавите метод paameters во secondstotime()
метод secondstotime()
, он напечатает следующий результат:
var unix = Math.round(+new Date()/1000);
console.log(unix) //works
function secondstotime(unix)
{
var t = new Date(1970,0,1);
t.setSeconds(unix);
var s = t.toTimeString().substr(0,8);
if(unix > 86399)
s = Math.floor((t - Date.parse("1/1/70")) / 3600000) + s.substr(2);
console.log(s);
}
secondstotime(unix);
Вывод:
1469424875
56408173:34:35
Неясно, чего именно вы хотите. Можете ли вы показать нам свой ожидаемый результат?