根据Poco::Timestamp
的头文件,时间戳采用 UTC,请参阅时间戳文档。如果时间戳采用 UTC,则将Poco::LocalDateTime
转换为Poco::Timestamp
的方法是否应该确保返回的时间戳采用 UTC?目前,Poco::LocalDateTime::timestamp()
不执行此操作,返回的时间戳为本地时间。
这尤其奇怪,因为赋值运算符Poco::LocalDateTime::operator = (const Timestamp& timestamp)
执行 UTC 到本地时间的转换。因此,以下代码断言:
Poco::LocalDateTime local1 = Poco::LocalDateTime( 2020, 1, 30 );
Poco::Timestamp timestamp = local1.timestamp();
Poco::LocalDateTime local2 = timestamp;
assert( local1 == local2 );
local1
的值不会与此示例中的local2
值相同。我是唯一一个认为这是奇怪行为的人吗?
如果您查看LocalDateTime::timestamp()
,您会发现它在通过Timestamp::fromUtcTime
返回之前转换时间戳,以便该函数返回本地时间的时间戳,而不是 UTC 时间。
您可以使用Timestamp::utcTime()
函数或Timestamp::raw()
函数,但它们返回不同的类型,以防止您意外地做错事。
你在这里到底想实现什么?