0

我正在解析带有日期和时间的文件。假设我有以下格式的日期和时间:

2009/07/18 10:48:39 CET (value in txt-file)

这是在 ET:

2009/07/18 4:48:39 ET (could also be the value i parsed)

有没有在时间/日期之间转换的解决方案?也许提升?

在 boost 文档中找不到有用的信息。

假设我想在 C++ 中从 CET 到 ET 或 ET 到 EST 或 CET 到 EST,你会怎么做?

4

2 回答 2

0

strftimestruct tm*允许您使用日期时间格式字符(%Y、%m、%d 等)打印出对象。

您可以做的是struct tm*通过解析您的输入数据来加载一个对象(假设它是常规的,这应该不需要很多代码),然后根据您的时区转换使用一些自定义逻辑修改 tm 结构的各个部分(添加小时,然后检查您是否需要根据新的小时值更新日期),然后通过 strftime 以您想要的格式打印此日期时间值。不像 php 中可用的 strptime/strftime 函数那么简单,但仍然是一个解决方案。

于 2012-12-11T23:33:43.553 回答
0

我推荐https://github.com/google/cctz

另请注意,“CET”和“ET”不是实时时区标识符。它们可能是某个时区的缩写,但它们并不能唯一标识实际时区。如果您对文件中的数据有一定的控制权,则应将“CET”和“ET”更改为数字 UTC 偏移值,例如由%zfrom strftime()(and cctz::Format()) 生成的值。数字 UTC 偏移量和 Y/M/DH:M:S 字段将让您正确解析出确切的时间瞬间。

于 2015-11-24T15:02:48.703 回答