我有一个将ticks转换为time_t格式的函数
long ticks = DateTime.Now.Ticks;
long tt = GetTimeTSecondsFrom(ticks);
long GetTimeTSecondsFrom(long ticks)
{
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
return (long) (new DateTime(ticks) - epoch).TotalSeconds;
}
现在我很困惑如何用一些数学公式将其转换回刻度而不是函数。
任何建议...... ??
感谢
让我讲一般情况并解释一下。 DateTime.Now.Ticks给我一个值为633921719670980000,这是在抽搐
然后我用time_t用上面的函数转换它,得到tt = 1256575167
现在我想把它转换回633921719670980000.为此我需要一个公式
答案 0 :(得分:3)
答案是作为对original question关于将刻度转换为time_t的评论。
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
return TimeSpan.FromSeconds(time_t_value).Ticks + epoch.Ticks;
答案 1 :(得分:2)
日期1970-01-01 00:00:00 Z
正好是62,135,596,800秒(621,355,968,000,000,000个刻度),因此要将DateTime
刻度计数转换为time_t
值,您只需缩放它(除以10,000,000)即可获得秒,然后减去该偏移。
换句话说,反过来:将偏移秒添加到time_t
值,然后将其缩放(乘以10,000,000)以得到滴答。
答案 2 :(得分:0)
来自MSDN文档:
单个刻度表示一百纳秒或一百万分之一秒。一毫秒内有10,000个滴答。
因此,将秒转换为刻度的函数看起来像:
long GetTicksFromSeconds(long seconds)
{
return seconds * 10000000;
}