此问题已在此处有答案:
How do I go from a NaiveDate to a specific TimeZone with Chrono?(3个答案)
3年前关闭。
Rust的chrono
非常令人沮丧,因为它使时区转换非常困难。
例如:我的用户输入一个字符串。我使用NaiveDateTime::parse_from_str
将其解析为一个简单的日期时间。现在我想把它转换成一个DateTime<Local>
。
不幸的是,我似乎不知道如何做到这一点。使用Local::From
不起作用。使用DateTime<Local>::from()
也不起作用。这两个结构都没有从NaiveDateTime
转换的方法,NaiveDateTime
也没有转换为Local
的方法。
然而,我们可以这样做:someLocalDateTime.date().and_time(some_naive_time)
。那么为什么我们不能直接做Local::new(some_naive_date_time)
呢?
另外,为什么我们不能在解析中跳过字段?我不需要秒也不需要年。为了假设当前的年份和0秒,我必须手动编写解析代码并从ymd hms构造日期时间。
1条答案
按热度按时间cs7cruho1#
此功能由the
chrono::offset::TimeZone
trait提供。具体来说,方法TimeZone::from_local_datetime
几乎就是您要查找的。(playground)
至于另一个关于使用假设进行解析的问题,我不确定工具是否存在。如果
ParseResult
允许您在解包(或您有什么)结果之前手动设置特定值,那将是很酷的。一个让您仍然使用
chrono
的解析器的想法是手动将额外的字段添加到解析字符串中。例如:
(playground)