将time_t转换为ticks

时间:2009-10-26 20:10:39

标签: c# asp.net

我有一个将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.为此我需要一个公式

3 个答案:

答案 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;
}