2024-01-01 14:58:21 -05:00
|
|
|
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2023-03-15 03:14:22 -04:00
|
|
|
|
|
|
|
/// Identical to chrono::Utc::now() but without the system "clock"
|
|
|
|
/// feature flag.
|
|
|
|
///
|
|
|
|
/// The "clock" feature flag pulls in the "iana-time-zone" crate
|
|
|
|
/// which links to macOS's "CoreFoundation" framework which increases
|
|
|
|
/// startup time for the CLI.
|
|
|
|
///
|
|
|
|
/// You can simply include this file in your project using
|
|
|
|
/// `include!("path/to/cli/util/time.rs"))` and use it
|
|
|
|
/// as a drop-in replacement for chrono::Utc::now().
|
|
|
|
pub fn utc_now() -> chrono::DateTime<chrono::Utc> {
|
|
|
|
let now = std::time::SystemTime::now()
|
|
|
|
.duration_since(std::time::UNIX_EPOCH)
|
|
|
|
.expect("system time before Unix epoch");
|
2023-07-25 21:40:09 -04:00
|
|
|
let naive = chrono::NaiveDateTime::from_timestamp_opt(
|
2023-03-15 03:14:22 -04:00
|
|
|
now.as_secs() as i64,
|
|
|
|
now.subsec_nanos(),
|
2023-07-25 21:40:09 -04:00
|
|
|
)
|
|
|
|
.unwrap();
|
2023-09-14 15:17:38 -04:00
|
|
|
chrono::DateTime::from_naive_utc_and_offset(naive, chrono::Utc)
|
2023-03-15 03:14:22 -04:00
|
|
|
}
|