Проблема с форматированием времени из базы данных
В моем проекте я сохраняю временные метки в базе данных MySQL в виде Unix timestamp. Эти данные потом передаются в клиентскую часть приложения на JavaScript.
Мне нужно извлечь из этой временной метки только время и отобразить его в читаемом формате, например ЧЧ:ММ:СС
.
// У меня есть такая временная метка
let unixTime = 1634567890;
// Нужно получить что-то вроде "14:23:10"
let formattedTime = convertToTimeFormat(unixTime);
console.log(formattedTime);
Как правильно реализовать функцию convertToTimeFormat()
для получения времени в нужном виде? Какие методы JavaScript лучше использовать для работы с Unix timestamp?
Можно ещё через Date объект — просто вытащи часы, минуты и секунды руками:
function convertToTimeFormat(unixTime) {
let date = new Date(unixTime * 1000);
let hours = date.getHours().toString().padStart(2, '0');
let minutes = date.getMinutes().toString().padStart(2, '0');
let seconds = date.getSeconds().toString().padStart(2, '0');
return `${hours}:${minutes}:${seconds}`;
}
Так у тебя больше контроля над форматом, если что-то нужно будет поменять.
У меня была похожая задача, только с UTC временем. Использовал getUTCHours(), getUTCMinutes() и getUTCSeconds() - удобно для разных часовых поясов. Кстати, твой timestamp из MySQL точно в секундах или в миллисекундах?
Я недавно делал то же самое! Просто создай объект Date из timestamp и используй toLocaleTimeString():
function convertToTimeFormat(unixTime) {
let date = new Date(unixTime * 1000);
return date.toLocaleTimeString('ru-RU', {hour12: false});
}
Не забудь умножить на 1000 - в JS время в миллисекундах, а unix timestamp в секундах. Получишь формат ЧЧ:ММ:СС с учетом твоей временной зоны.