¿Cómo puedo obtener la hora actual en milisegundos como puedo en Java?
System.currentTimeMillis()
Respuestas:
Desde Rust 1.8, no es necesario utilizar una caja. En su lugar, puede usar SystemTime
y 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);
}
Si necesita exactamente milisegundos, puede convertir el Duration
.
let in_ms = since_the_epoch.as_millis();
let in_ms = since_the_epoch.as_secs() as u128 * 1000 +
since_the_epoch.subsec_millis() as u128;
let in_ms = since_the_epoch.as_secs() * 1000 +
since_the_epoch.subsec_nanos() as u64 / 1_000_000;
Instant
: No hay ningún método para obtener "la cantidad de segundos" de un instante. En cambio, solo permite medir la duración entre dos instantes (o comparar dos instantes).
Si solo desea hacer tiempos simples con milisegundos, puede usar std::time::Instant
así:
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);
}
Salida:
Debug: 10.93993ms
Millis: 10 ms
Millis: 10 ms
u128 is not supported
.
Puedes usar la caja de tiempo :
extern crate time;
fn main() {
println!("{}", time::now());
}
Devuelve un valor Tm
que puede obtener la precisión que desee.
precise_time_...
funciones de esa caja también son relevantes, si solo se desea medir tiempos relativos.
time::now_utc()
o time::get_time()
ya que System.currentTimeMillis () de Java devuelve la hora UTC. Escribiríalet timespec = time::get_time(); let mills = timespec.sec + timespec.nsec as i64 / 1000 / 1000;
chrono
caja.
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);
}
System.currentTimeMillis()
en Java devuelve la diferencia en milisegundos entre la hora actual y la medianoche del 1 de enero de 1970.
En Rust tenemos time::get_time()
que devuelve un Timespec
con la hora actual en segundos y el desplazamiento en nanosegundos desde la medianoche del 1 de enero de 1970.
Ejemplo (usando 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);
}
Referencia: caja de tiempo , System.currentTimeMillis ()