如何从String或&str构造chrono_tz的Tz枚举实例?
使用chrono-tz从字符串创建Tz对象及枚举变体用法
一、直接使用自动生成的枚举变体
chrono-tz自动生成的枚举变体(比如Europe__London)可直接作为Tz类型的值使用,命名规则是把IANA时区标识里的/替换为__。示例代码:
use chrono::{DateTime, Utc}; use chrono_tz::Tz; fn main() { // 直接将枚举变体赋值为Tz类型 let london_tz: Tz = chrono_tz::Europe__London; // 把UTC时间转换为伦敦时区时间 let utc_now = Utc::now(); let london_now: DateTime<Tz> = utc_now.with_timezone(&london_tz); println!("当前伦敦时间: {}", london_now); }
二、从String或&str创建Tz对象
chrono-tz为Tz实现了FromStr trait,能通过parse方法直接解析标准IANA时区字符串(比如"Europe/London"):
use chrono_tz::Tz; fn main() { // 从&str解析时区 match "Europe/London".parse::<Tz>() { Ok(london_tz) => println!("解析得到时区: {:?}", london_tz), Err(err) => eprintln!("解析失败: {}", err), } // 从String解析时区(String可直接转&str调用parse) let shanghai_tz_str = String::from("Asia/Shanghai"); if let Ok(shanghai_tz) = shanghai_tz_str.parse() { println!("上海时区: {:?}", shanghai_tz); } }
内容的提问来源于stack exchange,提问作者user2138149
相关产品推荐
相关产品推荐

