我正在解析包含日期和时间的文件。 假设我有以下格式的日期和时间:
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,你会做什么?
答案 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偏移值,例如%z
从strftime()
生成的值(和cctz::Format()
})。数字UTC偏移和Y / M / D H:M:S字段可以让您正确地解析出确切的时刻。