C ++将时间ET转换为CET或其他

时间:2012-12-11 22:48:49

标签: c++ timezone converter

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

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)

是否有解决方案在时间/日期之间进行转换?也许提升?

在增强文档中无法找到有用的信息。

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我建议https://github.com/google/cctz

另请注意,“CET”和“ET”不是实时区域标识符。它们可能是某些时区的缩写,但它们并不唯一地标识实际时区。如果您可以控制文件中的数据,则应将“CET”和“ET”更改为数字UTC偏移值,例如%zstrftime()生成的值(和cctz::Format() })。数字UTC偏移和Y / M / D H:M:S字段可以让您正确地解析出确切的时刻。