fixes
This commit is contained in:
58
src/utils.rs
58
src/utils.rs
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user