1

我们DD-MM-YYYY HH:mm:ss在前端和后端之间使用日期和时间格式 API。

但是,在某些情况下,后端仅获取日期,因为在前端未选择时间。调用参数将GET如下所示:

startTime=16-11-2021

在后端,我们使用COleDateTime该类来解析日期和时间。问题是上述情况下的时间被初始化为00:00:00实际上没有发送时间。我需要一种方法来区分未发送时间和午夜,因为实际时间在我们的系统中很重要,并且未发送时间和午夜之间存在很大差异。

ParseDateTime函数似乎希望在其第二个参数中获得一个标志,VAR_TIMEVALUEONLY以在解析期间忽略日期部分。因此,为此,我需要实现一个解析函数,以便知道我是否有时间预期该ParseDateTime函数将被设置为未定义的时间,就像-1没有发送时间一样。有没有办法区分COleDateTime上课没时间到午夜?如果没有,也许你有另一种方法可以使用公共图书馆,比如<chrono>可以解决我的问题?

4

1 回答 1

0

COleDateTime有一个函数GetStatus()可以判断对象是否完全没有价值。在所有其他情况下,它都是有效的。这意味着“没有时间”和午夜之间没有区别。该类型似乎旨在编码绝对时间点。仅日期或仅时间使用 0 个组件劫持此编码。无日期很容易被发现,因为日期编号从 0100-01-01 开始,不能与 0000-00-00 混淆。没有什么支持发现没有时间的。

如果您需要更好地处理时间不确定性,那么这种格式并不适合。不幸的是,大多数其他常见的替代品都有类似的问题。 <chrono>将提供等效功能,即time_point. 它还分别支持日期时间,并进行大量转换。Boost 也有类似的限制DateTime(除非你会误用毫秒,这看起来很奇怪)。

当您从前端获取时间DD-MM-YYYY HH:mm:ssDD-MM-YYYY格式时,您很容易解析是否有时间。最简单的可能是创建一个与指标一起DateTimeWrapper包装的。COleDateTimeisTimeAccurate

于 2021-12-12T15:44:15.283 回答