如何在Java中获得当前时间(以毫秒为单位)?
System.currentTimeMillis()
Run Code Online (Sandbox Code Playgroud)
She*_*ter 73
从Rust 1.8开始,您不需要使用板条箱.相反,您可以使用SystemTime和UNIX_EPOCH:
use std::time::{SystemTime, UNIX_EPOCH};
fn main() {
let start = SystemTime::now();
let since_the_epoch = start.duration_since(UNIX_EPOCH)
.expect("Time went backwards");
println!("{:?}", since_the_epoch);
}
Run Code Online (Sandbox Code Playgroud)
如果你需要精确的毫秒,你可以转换Duration.
let in_ms = since_the_epoch.as_millis();
Run Code Online (Sandbox Code Playgroud)
let in_ms = since_the_epoch.as_secs() as u128 * 1000 +
since_the_epoch.subsec_millis() as u128;
Run Code Online (Sandbox Code Playgroud)
let in_ms = since_the_epoch.as_secs() * 1000 +
since_the_epoch.subsec_nanos() as u64 / 1_000_000;
Run Code Online (Sandbox Code Playgroud)
rob*_*nst 20
如果你只想用毫秒做简单的时间,你可以std::time::Instant像这样使用:
use std::time::Instant;
fn main() {
let start = Instant::now();
// do stuff
let elapsed = start.elapsed();
// Debug format
println!("Debug: {:?}", elapsed);
// Format as milliseconds rounded down
// Since Rust 1.33:
println!("Millis: {} ms", elapsed.as_millis());
// Before Rust 1.33:
println!("Millis: {} ms",
(elapsed.as_secs() * 1_000) + (elapsed.subsec_nanos() / 1_000_000) as u64);
}
Run Code Online (Sandbox Code Playgroud)
Ste*_*nik 17
你可以使用时间箱:
extern crate time;
fn main() {
println!("{}", time::now());
}
Run Code Online (Sandbox Code Playgroud)
它返回一个Tm你可以得到你想要的精度.
小智 12
正如 @Shepmaster 提到的,这相当于System.currentTimeMillis()Rust 中的 Java。
use std::time::{SystemTime, UNIX_EPOCH};
fn get_epoch_ms() -> u128 {
SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap()
.as_millis()
}
Run Code Online (Sandbox Code Playgroud)
use chrono::prelude::*;
pub fn get_unix_timestamp_ms() -> i64 {
let now = Utc::now();
now.timestamp_millis()
}
pub fn get_unix_timestamp_us() -> i64 {
let now = Utc::now();
now.timestamp_nanos()
}
Run Code Online (Sandbox Code Playgroud)
小智 6
extern crate time;
fn timestamp() -> f64 {
let timespec = time::get_time();
// 1459440009.113178
let mills: f64 = timespec.sec as f64 + (timespec.nsec as f64 / 1000.0 / 1000.0 / 1000.0);
mills
}
fn main() {
let ts = timestamp();
println!("Time Stamp: {:?}", ts);
}
Run Code Online (Sandbox Code Playgroud)
System.currentTimeMillis() 在 Java 中返回当前时间与 1970 年 1 月 1 日午夜之间的差值(以毫秒为单位)。
在 Rust 中,我们有time::get_time()返回一个Timespec以秒为单位的当前时间和自 1970 年 1 月 1 日午夜以来以纳秒为单位的偏移量。
示例(使用 Rust 1.13):
extern crate time; //Time library
fn main() {
//Get current time
let current_time = time::get_time();
//Print results
println!("Time in seconds {}\nOffset in nanoseconds {}",
current_time.sec,
current_time.nsec);
//Calculate milliseconds
let milliseconds = (current_time.sec as i64 * 1000) +
(current_time.nsec as i64 / 1000 / 1000);
println!("System.currentTimeMillis(): {}", milliseconds);
}
Run Code Online (Sandbox Code Playgroud)
参考:时间箱,System.currentTimeMillis()
小智 5
似乎有一个简单的单行代码可以生成 a u128,这与 java 非常接近long。
let timestamp = std::time::UNIX_EPOCH.elapsed().unwrap().as_millis()
Run Code Online (Sandbox Code Playgroud)
文档确实警告与 SystemTime 对象相关的时钟漂移,但我认为这不适用于此处,因为我们正在检查早先的时间点。
| 归档时间: |
|
| 查看次数: |
30966 次 |
| 最近记录: |