Rust创建PrimitiveDateTime,将now作为value,将time作为crate

p4tfgftt  于 2023-05-07  发布在  其他
关注(0)|答案(1)|浏览(224)

我使用的是crate时间,我想创建一个以now为参考的UTC日期时间(就像“take machine time”)。我可以用OffsetDateTime和now_utc()构造函数来实现。但是我想要一个原始的datetime,因为我使用sqlx,数据库类型是TIMESTAMP。(postgres)。
并且PrimitiveDateTime不使用机器时间实现构造函数。
所以我尝试将我的OffsetDateTime转换为PrimitiveDateTime,但我没有找到方法。并且from / into trait没有在这两个类型之间实现,而且OffsetDateTime也没有方法返回PrimitiveDateTime和偏移量。我看到的唯一方法是获取日历日期和时间,并在另一边重建PrimitiveDateTime。
这个解决方案确实不理想。所以我才来这里
我想做

let now = PrimitiveDateTime::now()

let now: PrimitiveDatetime = OffsetDateTime::now_utc().as_primitive_utc()

let (datetime, _offset) = my_offset_datetime.to_primitive()
zzwlnbp8

zzwlnbp81#

我相信这样做的方法是这样的:

let now_odt = OffsetDateTime::now_utc();
let now_pdt = PrimitiveDateTime::new(now_odt.date(), now_odt.time());

也就是说,已经有一个通过sqlx将OffsetDateTime与PostgreSQL一起使用的实现。

相关问题