2010-06-26 56 views

回答

7

即不能被表示为一个整数,它会溢出。但是,这可能会很长。

DateTime dateTime = new DateTime(2010, 6, 26, 14, 44, 07); 
long time = long.Parse(dateTime.ToString("yyyyMMddHHmmss")); 

然而,这将是更直观简单表达它作为一个字符串,但我不知道你打算用这些信息做什么。

编辑:

既然你已经更新了这个问题,答案是简单的。

string time = dateTime.ToString("yyyyMMddHHmmss"); 
+0

感谢提示响应:) – 001 2010-06-26 04:27:23

0

32位整数不足以将DateTime值保留为非常精确的分辨率。 Ticks属性很长(Int64)。如果你并不需要精确到蜱级别,你可以得到类似秒钟从纪元:

TimeSpan t = (DateTime.UtcNow - new DateTime(1970, 1, 1)); 
int dateAsInteger = (int)t.TotalSeconds; 

它通常是一个坏主意,使用数字数据类型来存储一个数字,你不能做算术上。例如。在你的例子中的数字没有数字含义或值,添加它或减去它是毫无意义的。但是,自特定日期以来的秒数是,它可用作数字数据类型。

+0

从他的样品,它看起来像他只是想要将实际日期表示为以年,月,日等开始的数字。 – 2010-06-26 04:12:36

+0

他没有要求秒数,请再次阅读问题 – 2010-06-26 04:13:17

+0

@Srin:原始问题中的示例确实显示秒数。 – 2010-06-26 04:19:00

0

注意:这是在问题改为“字符串值”而不是“整数值”之前发布的。

从本质上讲,你要沿着所需的各部分名额转移号码,然后将其添加:

var x = new DateTime(2010,06,26,14,47,07); 

long i = x.Year; 
i = i * 100 + x.Month; 
i = i * 100 + x.Day; 
i = i * 100 + x.Hour; 
i = i * 100 + x.Minute; 
i = i * 100 + x.Second; 

Console.WriteLine(i); // 20100626144707 
相关问题