c / c ++ - 在Unix时间和“格里高利时间”之间转换

时间:2016-04-14 20:49:52

标签: c++ c unix unix-timestamp

我现在有时间戳,自公元1月1日午夜,公元前名义格里高利时间以微秒为单位,搜索后我注意到有些人称之为“本地Symbian时间”?无论是什么,我真的不知道如何将这个“本地Symbian时间”转换为Unix时间(自Epoch以来的时间)。 C / C ++中是否有标准函数来执行此操作?

示例数据如下:63626825878362695,63626825878363759,63626825878657652

2 个答案:

答案 0 :(得分:1)

  1. 您需要64位算术或bignums。
  2. 如果my tool帮助我解决这些问题是正确的,那么在0000年1月1日(预防格里高利)和1970年1月1日之间有62167132800秒。
  3. 要将Unix时间转换为Symbian,请添加62167132800并乘以1000000。
  4. 要将Symbian时间转换为Unix,除以1000000并减去62167132800。
  5. 看起来你提供的三个值(都在同一秒内)大约是10天前。

答案 1 :(得分:0)

Year 0 AD并不存在; - )

您应该可以使用ICU - International Components for Unicode,因为它可以处理最常见的日期和时间转换。查看Universal Time Scale页面上的转换段落 - 它显示了如何使用ICU在各种日期和时间格式之间进行转换。