管理闰秒及时管理

时间:2015-06-16 09:44:04

标签: c++ time leap-second

我刚学会在本月底(2015年6月)添加leap second。我有点害怕,因为我管理自己的时间课。我不确定它是否足够强大。

我使用Instant成员变量unsigned long long int创建了一个班级ms,这是01/01/1600 0:00:00void Instant::setCurrentTime() { struct timeval tv; gettimeofday(&tv, NULL); this->ms = NBR_DAYS_TO_EPOCH; // 135140 this->ms *= NBR_SECONDS_IN_DAY; // 86400 this->ms += tv.tv_sec; this->ms *= NBR_MILLISECONDS_IN_SECOND; // 1000 this->ms += tv.tv_usec/1000; } 的毫秒数。

当我想获得当前时间时,我称之为此功能:

tv.tv_sec

我的第一个问题是:闰秒如何影响这个数字?它是否已在30/06/2015值中考虑过了?怎么样?

我的第二个问题是关于转换为人类可读的格式。我不在这里发布,因为我的功能非常庞大(如果需要我可以发布),但想法如下:

  • 我首先计算当天的秒数,然后计算分钟数和小时数;
  • 我计算当天之前的天数;
  • 然后我计算400年的周期数(周​​期性过程),400年当前周期中100年的周期数,以及当前4年周期中4年的周期数; < / LI>
  • 由此,我推断出年份(跳跃与否),月份,日期和星期几;
  • 然后我检查夏令时是否已激活,并根据区域(2007年之前的欧洲,美国,2007年的美国)更新值;
  • 所有这一切都没有考虑到1970年增加的25个闰秒。

目前,我的班级无法说“我们23:59:60 59”,因为我的秒数仅限于Lst_Videos = List<VideoItem> - For Non Grouping View Lst_grp = List<VideoGrp> - For Grouping View public Class VideoGrp { public string Key { get; set; } public int ItemsCount { get; set; } public List<VideoItem> Items { get; set; } } public Class VideoItem { public string MediaId { get; set; } public string PictureTitle { get; set; } } 。但也因为我不知道如何管理它。什么是好方法?

0 个答案:

没有答案