Function python_comm::prelude::bjtc_from_duration [−][src]
pub fn bjtc_from_duration(anchor: &DateTime<Utc>, millis: f64) -> i64
Expand description
转换 duration 为 timestamp, 精确到毫秒
在同一时刻记录 DateTime 为 anchor, 创建 time::Instant 为 now, 则在之后的任意时刻
bjtc_from_duration 转换 now.duration() 为 timestamp,
bjtc_to_duration 转换 timestamp 为 now.duration()
用法
use chrono::Utc; use python_comm::prelude::*; use std::{thread, time}; let anchor = Utc::now(); let now = time::Instant::now(); thread::sleep(time::Duration::from_millis(700)); // 0.7 秒 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);