我有以下DateTime 4/25/2011 5:12:13 PM 并尝试将其转换为int
int result = dateDate.Year * 10000 + dateDate.Month * 100
+ dateDate.Day + dateDate.Hour + dateDate.Minute + dateDate.Second;
但它仍然得到2011425我怎么能得到时间呢?
答案 0 :(得分:57)
dateDate.Ticks
应该给你你想要的东西。
此属性的值表示 100纳秒间隔的数量 已经过了12:00:00 0001年1月1日午夜 表示DateTime.MinValue。确实如此 不包括那些滴答数 可归因于闰秒。
如果您真的在寻找Linux Epoch时间(自1970年1月1日以来的秒数),this问题的接受答案应该是相关的。
但是如果你真的想把日期的字符串表示“压缩”成int,你应该问问自己为什么不把它作为一个字符串存储起来。如果您仍然希望在此之后执行此操作,Stecya's answer是正确的。请记住,它不适合int,你必须使用long。
答案 1 :(得分:46)
long n = long.Parse(date.ToString("yyyyMMddHHmmss"));
答案 2 :(得分:5)
我认为你想要的(但这不适合int
,你需要将它存储为long
):
long result = dateDate.Year * 10000000000 + dateDate.Month * 100000000 + dateDate.Day * 1000000 + dateDate.Hour * 10000 + dateDate.Minute * 100 + dateDate.Second;
或者,存储刻度线是一个更好的主意。
答案 3 :(得分:2)
你想要一个看起来像20110425171213的'int'吗?在这种情况下,您最好使用适当的格式(类似于'yyyyMMddHHmmss')将ToString更好,然后将字符串转换为整数(或者长整数,无符号整数,因为它将超过32位)。
如果你想要一个实际的数值(自0年以来的秒数),那么这是一个非常不同的计算,例如:
result = second
result += minute * 60
result += hour * 60 * 60
result += day * 60 * 60 * 24
等。
但你最好不要使用Ticks。
答案 4 :(得分:0)
string date = DateTime.Now.ToString();
date = date.Replace("/", "");
date = date.Replace(":", "");
date = date.Replace(" ", "");
date = date.Replace("AM", "");
date = date.Replace("PM", "");
return date;