fixes
Some checks failed
CI / Check (pull_request) Has been cancelled
CI / Format (pull_request) Has been cancelled
CI / Clippy (pull_request) Has been cancelled
CI / Build (macos-latest) (pull_request) Has been cancelled
CI / Build (ubuntu-latest) (pull_request) Has been cancelled
CI / Build (windows-latest) (pull_request) Has been cancelled
Some checks failed
CI / Check (pull_request) Has been cancelled
CI / Format (pull_request) Has been cancelled
CI / Clippy (pull_request) Has been cancelled
CI / Build (macos-latest) (pull_request) Has been cancelled
CI / Build (ubuntu-latest) (pull_request) Has been cancelled
CI / Build (windows-latest) (pull_request) Has been cancelled
This commit is contained in:
36
src/utils.rs
36
src/utils.rs
@@ -22,20 +22,42 @@ pub fn disable_tdlib_logs() {
|
||||
}
|
||||
}
|
||||
|
||||
/// Форматирование timestamp в время HH:MM
|
||||
pub fn format_timestamp(timestamp: i32) -> String {
|
||||
/// Форматирование timestamp в время HH:MM с учётом timezone offset
|
||||
/// timezone_str: строка формата "+03:00" или "-05:00"
|
||||
pub fn format_timestamp_with_tz(timestamp: i32, timezone_str: &str) -> String {
|
||||
let secs = timestamp as i64;
|
||||
// Конвертируем в локальное время (простой способ без chrono)
|
||||
// UTC + смещение для локального времени
|
||||
let hours = ((secs % 86400) / 3600) as u32;
|
||||
|
||||
// Парсим timezone offset (например "+03:00" -> 3 часа)
|
||||
let offset_hours = parse_timezone_offset(timezone_str);
|
||||
|
||||
let hours = ((secs % 86400) / 3600) as i32;
|
||||
let minutes = ((secs % 3600) / 60) as u32;
|
||||
|
||||
// Примерное локальное время (добавим 3 часа для MSK, можно настроить)
|
||||
let local_hours = (hours + 3) % 24;
|
||||
// Применяем timezone offset
|
||||
let local_hours = ((hours + offset_hours) % 24 + 24) % 24;
|
||||
|
||||
format!("{:02}:{:02}", local_hours, minutes)
|
||||
}
|
||||
|
||||
/// Парсит timezone строку типа "+03:00" в количество часов
|
||||
fn parse_timezone_offset(tz: &str) -> i32 {
|
||||
// Простой парсинг "+03:00" или "-05:00"
|
||||
if tz.len() >= 3 {
|
||||
let sign = if tz.starts_with('-') { -1 } else { 1 };
|
||||
let hours_str = &tz[1..3];
|
||||
if let Ok(hours) = hours_str.parse::<i32>() {
|
||||
return sign * hours;
|
||||
}
|
||||
}
|
||||
3 // fallback к MSK
|
||||
}
|
||||
|
||||
/// Устаревшая функция для обратной совместимости (используется дефолтный +03:00)
|
||||
#[allow(dead_code)]
|
||||
pub fn format_timestamp(timestamp: i32) -> String {
|
||||
format_timestamp_with_tz(timestamp, "+03:00")
|
||||
}
|
||||
|
||||
/// Форматирование timestamp в дату для разделителя
|
||||
pub fn format_date(timestamp: i32) -> String {
|
||||
use std::time::{SystemTime, UNIX_EPOCH};
|
||||
|
||||
Reference in New Issue
Block a user