Function python_comm::use_basic::bjtc_from_duration
source · [−]Expand description
Convert duration to timestamp, accurate to milliseconds
At the same time, record datetime as anchor, create time::instant as now, then at any time after,
bjtc_from_duration convert now.duration() to timestamp,
bjtc_to_duration convert timestamp to now.duration()
Usage
use chrono::Utc;
use python_comm::use_basic::*;
use std::{thread, time};
let anchor = Utc::now();
let now = time::Instant::now();
thread::sleep(time::Duration::from_millis(700)); // 0.7 seconds
let t1 = bjtc_from_duration(&anchor, now.elapsed().as_secs_f64() * 1000.0);
let t2 = bjtc_to_duration(&anchor, t1).unwrap();
let diff = t2.as_secs_f64() - 0.7;
assert!(diff > -0.5 && diff < 0.5);
let t1 = bjtc_from_duration(&anchor, 1000.0);
let t3 = bjtc_to_duration(&anchor, t1 - 1000);
assert_eq!(t3.is_err(), false);
assert_eq!(t3.unwrap().as_secs_f64(), 0.0);
let t4 = bjtc_to_duration(&anchor, t1 - 1001);
assert_eq!(t4.is_err(), true);
let diff = bjtc_to_duration(&anchor, bj_timestamp_millis())
.unwrap()
.as_secs_f64()
- 0.7;
assert!(diff > -0.5 && diff < 0.5);