如何将DateTime转换为整数值?
编辑:如何将DateTime转换为字符串值?
实施例
String return value of 20100626144707 (for 26th of June 2010, at 14:47:07)
答案 0 :(得分:7)
这不能表示为整数,它会溢出。然而,它可能会很长。
DateTime dateTime = new DateTime(2010, 6, 26, 14, 44, 07);
long time = long.Parse(dateTime.ToString("yyyyMMddHHmmss"));
然而,简单地将其表达为字符串会更直观,但我不知道您打算如何处理这些信息。
修改:
由于您已更新问题,答案更简单。
string time = dateTime.ToString("yyyyMMddHHmmss");
答案 1 :(得分:0)
32位整数不足以将DateTime值保持为非常精确的分辨率。 Ticks属性为long(Int64)。如果你不需要精确到刻度级别,你可以得到像纪元以来的秒数:
TimeSpan t = (DateTime.UtcNow - new DateTime(1970, 1, 1));
int dateAsInteger = (int)t.TotalSeconds;
使用数值数据类型来存储您无法进行算术运算的数字通常是个坏主意。例如。示例中的数字没有数字含义或值,添加或减去它是没有意义的。但是,自某个日期以来的秒数可用作数字数据类型。
答案 2 :(得分: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