2010-01-12 74 views
0

我想将当前时间保存为整数re-perl。我知道我需要一个TimeSpan,从Windows时间开始开始。我知道窗口时间从?, 1月1日开始时,1601将当前时间保存为整数

scope_creep

+0

您可以尝试相反的操作,将“0”赋值给一个整型变量并将其转换为日期。这样,你应该得到最低的开始日期(又名“新纪元”)。 – stakx 2010-01-12 17:03:54

回答

4

难道一定是整数?它会很长吗?如果是这样,简单的答案是在DateTime对象上使用.Ticks属性。

您还可以从MinValue属性获得支持的“最小”DateTime。然后,您可以使用正常的减法运算符来获得两个DateTime之间的TimeSpan差异。

另外,作为整数存储时间可能会非常棘手,因为最大(无符号)整型值只能存储大约136年。如果你需要超出这个范围的解决方案,你需要使用很长时间,或者至少确保你适当地选择你的开始日期。

UPDATE:为了解决您的意见,您可以存储的时间,然后计算到秒像这样:

long Ticks1 = DateTime.Now.AddSeconds(-10).Ticks; 
long Ticks2 = DateTime.Now.Ticks; 
TimeSpan elapsedTime = TimeSpan.FromTicks(Ticks2 - Ticks1); 
+0

嗨迈克尔 确保准确性应该很长。它只需要解决到几秒或几微秒,所以我可以对它们进行减法。我需要它们的原因是为了测量记录的值在窗口值内不通过阈值,即例如20秒窗口内的3个测量值,窗口向前移动。 – 2010-01-12 16:58:08

+0

在这种情况下,您应该使用.Ticks - 它的内置功能,您可以轻松地从给定的Ticks值重建DateTime。 1秒将相当于10,000,000个蜱,所以分辨率很高。我已经更新了reesponse以提供一个例子。 – 2010-01-12 17:01:40

1

您可以存储时间从开始的整数你指出你喜欢。只要确保它总是一样的。要将您的值转换为DateTime对象,请使用您选择的开始日期创建一个新的DateTime对象,并添加存储在整数变量中的秒数以返回可用对象。要将DateTime转换为您的值,只需将DateTime.Subtract方法与实例化为开始日期的DateTime对象一起使用即可。