This commit is contained in:
Mikhail Kilin
2026-01-21 02:27:08 +03:00
parent 9912ac11bd
commit 32ab1df1fa
8 changed files with 291 additions and 79 deletions

View File

@@ -22,26 +22,60 @@ pub fn disable_tdlib_logs() {
}
}
/// Форматирование timestamp в человекочитаемый формат
/// Форматирование timestamp в время HH:MM
pub fn format_timestamp(timestamp: i32) -> String {
let secs = timestamp as i64;
// Конвертируем в локальное время (простой способ без chrono)
// UTC + смещение для локального времени
let hours = ((secs % 86400) / 3600) as u32;
let minutes = ((secs % 3600) / 60) as u32;
// Примерное локальное время (добавим 3 часа для MSK, можно настроить)
let local_hours = (hours + 3) % 24;
format!("{:02}:{:02}", local_hours, minutes)
}
/// Форматирование timestamp в дату для разделителя
pub fn format_date(timestamp: i32) -> String {
use std::time::{SystemTime, UNIX_EPOCH};
let now = SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap()
.as_secs() as i32;
.as_secs() as i64;
let diff = now - timestamp;
let msg_day = timestamp as i64 / 86400;
let today = now / 86400;
if diff < 60 {
"just now".to_string()
} else if diff < 3600 {
format!("{}m ago", diff / 60)
} else if diff < 86400 {
format!("{}h ago", diff / 3600)
if msg_day == today {
"Сегодня".to_string()
} else if msg_day == today - 1 {
"Вчера".to_string()
} else {
let secs = timestamp as u64;
let days = secs / 86400;
format!("{}d ago", (now as u64 / 86400) - days)
// Простое форматирование даты
let days_since_epoch = timestamp as i64 / 86400;
// Приблизительный расчёт даты (без учёта високосных годов)
let year = 1970 + (days_since_epoch / 365) as i32;
let day_of_year = days_since_epoch % 365;
let months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
let mut month = 0;
let mut day = day_of_year as i32;
for (i, &m) in months.iter().enumerate() {
if day < m {
month = i + 1;
break;
}
day -= m;
}
format!("{:02}.{:02}.{}", day + 1, month, year)
}
}
/// Получить день из timestamp для группировки
pub fn get_day(timestamp: i32) -> i64 {
timestamp as i64 / 86400
}