2009-10-26 66 views
0

我有一个转换蜱time_t的格式转换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.此我需要一个公式

回答

2

日期1970-01-01 00:00:00 Z正是62135596800秒(621,355,968,000,000,000蜱),所以要转换DateTime剔计数为time_t价值,你可能只是它的规模(由10,000,000分),以获得秒钟,然后减去偏移。

换个角度来说,做相反的事情:将偏移秒添加到time_t值,然后对其进行缩放(乘以10,000,000)以得到滴答声。

+0

我明白这个逻辑非常合适..谢谢你..只是我想要的.. – user175084 2009-10-27 14:50:28

0

MSDN文档:

单个刻度表示一个几百纳秒或第二的千万分之一。毫秒中有10,000个刻度。

所以,一个功能转换秒蜱看起来是这样的:

long GetTicksFromSeconds(long seconds) 
{ 
    return seconds * 10000000; 
} 
+0

这不会给我我想要的值...请看看我编辑的部分以获得清晰的图片..谢谢 – user175084 2009-10-26 20:48:26

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; 
+0

它给出了一个错误'System.TimeSpan不包含'TotalTicks'的定义和没有扩展方法'TotalTicks ........ – user175084 2009-10-26 22:03:32

+0

它是否缺少程序集引用。 – user175084 2009-10-26 22:04:13

+0

我刚从原始评论中复制并粘贴。它是.Ticks,而不是.TotalTicks,使用Intellisense很容易发现。我已经更新了答案。 – 2009-10-26 22:06:39