Rust:
Перетворення дати в рядок
Як зробити:
use chrono::{DateTime, Utc, Local, NaiveDateTime};
fn main() {
// Час в UTC
let utc_now: DateTime<Utc> = Utc::now();
println!("{}", utc_now.format("%Y-%m-%d %H:%M:%S").to_string());
// Місцевий час
let local_now: DateTime<Local> = Local::now();
println!("{}", local_now.format("%Y-%m-%d %H:%M:%S").to_string());
// Без конкретної часової зони
let naive_now: NaiveDateTime = Local::now().naive_local();
println!("{}", naive_now.format("%Y-%m-%d %H:%M:%S").to_string());
}
Вивід буде приблизно таким (залежить від поточного часу):
2023-03-15 20:45:32
2023-03-15 23:45:32
2023-03-15 23:45:32
Підводні камені:
Колись програмісти писали код для перетворення дати в рядок самостійно, але це призвело до багатьох помилок. Сучасні мови, як Rust, надають бібліотеки, такі як chrono
, для безпечного та зручного маніпулювання датами. В chrono
є можливість використання часових зон, настройки формату й багато чого іншого.
Альтернативи вбудованим функціям перетворення дати в Rust включають використання crates, таких як time
або date
. Кожний має свої переваги та недоліки, вибір залежить від конкретних вимог проекту.
Внутрішня реалізація chrono
використовує свої типи даних для зберігання дати і часу: DateTime
, NaiveDateTime
, і ін. Кожен з цих типів слід використовувати в залежності від ситуації, наприклад, DateTime
для дат із часовими зонами, і NaiveDateTime
коли зона не важлива.