use chrono::{DateTime, FixedOffset, NaiveDateTime, Utc};
use chrono::format::ParseError;
use openssl::asn1::Asn1Type;
#[macro_export]
macro_rules! var_info {
($var:expr) => {{
fn type_name_of<T>(_: &T) -> &'static str {
std::any::type_name::<T>()
}
println!("变量: {}", stringify!($var));
println!("类型: {}", type_name_of(&$var));
print!("值为: {:?}",&$var);
}};
}
pub fn vec_to_string(vec: Vec<u8>) -> String {
String::from_utf8_lossy(&vec).to_string()
}
pub fn parse_datetime(date_str: &str) -> Result<DateTime<Utc>, anyhow::Error> {
if let Ok(dt) = DateTime::parse_from_rfc3339(date_str) {
return Ok(dt.with_timezone(&Utc));
}
if let Ok(dt) = DateTime::parse_from_str(date_str, "%Y-%m-%d %H:%M:%S%.fZ") {
return Ok(dt.with_timezone(&Utc));
}
if let Ok(ndt) = NaiveDateTime::parse_from_str(date_str, "%Y-%m-%d %H:%M:%S%.f") {
return Ok(DateTime::<Utc>::from_naive_utc_and_offset(ndt, Utc));
}
anyhow::bail!("无法解析日期字符串");
}