c/在Unix时间和"Gregorian time"之间转换

c/convert between Unix time and the "Gregorian time"

本文关键字:Gregorian time 之间 转换 Unix 时间      更新时间:2023-10-16

我现在有时间戳,从公元0年1月1日午夜开始,以微秒为单位。经过搜索,我注意到有些人称之为"原生Symbian时间"?不管是什么,我真的不知道如何将这个"原生Symbian时间"转换为Unix时间(自Epoch以来的时间)。C/C++中有什么标准函数可以做到这一点吗?

示例数据如下:6362682587836269563626825878.63759 63626825878657652

  1. 您将需要64位算术,或者bignums
  2. 如果我用来帮助我解决这些问题的工具是正确的,那么从1月1日(普罗维登格里高利)到1970年1月1号之间有62167132800秒
  3. 要将Unix时间转换为Symbian,请添加62167132800并乘以1000000
  4. 要将Symbian时间转换为Unix,请除以1000000并减去62167132800

看起来你给出的三个值(都在同一秒内)来自大约10天前。

公元0年并不存在;-)

您应该能够使用ICU-InternationalComponentsforUnicode,因为它能够处理最常见的日期和时间转换。请查看"通用时间刻度"页面上的"转换"一段,它显示了如何使用ICU在各种日期和时间格式之间进行转换。