本文簡要介紹rust語言中 Struct std::time::SystemTime
的用法。
用法
pub struct SystemTime(_);
係統時鍾的測量值,可用於與文件係統或其他進程等外部實體進行通信。
區別於std::time::Instant類型,這次測量不是單調的.這意味著您可以將一個文件保存到文件係統,然後將另一個文件保存到文件係統,第二個文件的SystemTime
測量值早於第一個文件.換句話說,實時發生在另一個操作之後的操作可能有一個更早的SystemTime
!
因此,比較兩個 SystemTime
實例以了解它們之間的持續時間會返回 Result
而不是可靠的 Duration
,以表明可能會發生這種時間漂移並需要處理。
盡管無法直接檢查 SystemTime
,但此模塊中提供了 UNIX_EPOCH
常量作為錨點,以便及時了解有關 SystemTime
的信息。通過從這個固定時間點計算持續時間,SystemTime
可以轉換為人類可讀的時間,或者可能是其他一些字符串表示。
SystemTime
結構的大小可能因目標操作係統而異。
例子:
use std::time::{Duration, SystemTime};
use std::thread::sleep;
fn main() {
let now = SystemTime::now();
// we sleep for 2 seconds
sleep(Duration::new(2, 0));
match now.elapsed() {
Ok(elapsed) => {
// it prints '2'
println!("{}", elapsed.as_secs());
}
Err(e) => {
// an error occurred!
println!("Error: {:?}", e);
}
}
}
底層係統調用
目前,以下係統調用正在使用 now()
獲取當前時間:
平台 | 係統調用 |
---|---|
SGX | insecure_time 用戶調用.更多信息新交所的計時 |
UNIX | clock_gettime(實時時鍾) |
Darwin | gettimeofday |
VXWorks | clock_gettime(實時時鍾) |
SOLID | SOLID_RTC_ReadTime |
WASI | __wasi_clock_time_get(實時時鍾) |
Windows | GetSystemTimePreciseAsFileTime /GetSystemTimeAsFileTime |
免責聲明:這些係統調用可能會隨著時間而改變。
注意:如果底層結構不能代表新的時間點,像 add
這樣的數學運算可能會出現Panics。
相關用法
- Rust SystemTime.elapsed用法及代碼示例
- Rust SystemTimeError.duration用法及代碼示例
- Rust SystemTimeError用法及代碼示例
- Rust SystemTime.now用法及代碼示例
- Rust SystemTime.duration_since用法及代碼示例
- Rust System用法及代碼示例
- Rust SyncSender.send用法及代碼示例
- Rust SyncOnceCell用法及代碼示例
- Rust SyncLazy用法及代碼示例
- Rust SyncOnceCell.get_or_try_init用法及代碼示例
- Rust SyncOnceCell.get_or_init用法及代碼示例
- Rust SyncSender.try_send用法及代碼示例
- Rust SymmetricDifference用法及代碼示例
- Rust SyncOnceCell.set用法及代碼示例
- Rust SyncOnceCell.take用法及代碼示例
- Rust SyncSender用法及代碼示例
- Rust SyncOnceCell.into_inner用法及代碼示例
- Rust SyncLazy.force用法及代碼示例
- Rust String.try_reserve用法及代碼示例
- Rust Saturating.reverse_bits用法及代碼示例
- Rust Seek.stream_len用法及代碼示例
- Rust SplitNMut用法及代碼示例
- Rust SocketAddrV6.ip用法及代碼示例
- Rust Shl.shl用法及代碼示例
- Rust SubAssign.sub_assign用法及代碼示例
注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Struct std::time::SystemTime。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。