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

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

我现在有自公历 0 月 1 日午夜以来以微秒为单位的时间戳,搜索后我注意到有些人称之为 "native Symbian time"?不管它是什么,我真的不知道如何将这个 "native Symbian time" 转换为 Unix 时间(自大纪元以来的时间)。 C/C++ 中是否有任何标准函数可以执行此操作?

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

  1. 您将需要 64 位算术或 bignums。
  2. 如果 my tool 帮助我解决这些问题是正确的,那么从 0000 年 1 月 1 日(公历)到 1970 年 1 月 1 日之间有 62167132800 秒。
  3. 要将 Unix 时间转换为 Symbian,请添加 62167132800 并乘以 1000000。
  4. 要将 Symbian 时间转换为 Unix,除以 1000000 并减去 62167132800。

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

Year 0 AD 并不存在 ;-)

您应该能够使用 ICU - International Components for Unicode, as it's able to handle most common date and time conversions. Have a look at the Converting paragraph on the Universal Time Scale 页面 - 它展示了如何使用 ICU 在各种日期和时间格式之间进行转换。