这是我在SQL Server转换日期时间为Int
SELECT CAST(CAST('2012-01-25 10:00:00.000' AS DATETIME) AS INT) + 2
结果所做的样本是40933
我怎样才能做到这一点使用C#?从哪里和如何这个整数来?
参考:Convert from DateTime to INT,但是这是我需要在C#中
这是我在SQL Server转换日期时间为Int
SELECT CAST(CAST('2012-01-25 10:00:00.000' AS DATETIME) AS INT) + 2
结果所做的样本是40933
我怎样才能做到这一点使用C#?从哪里和如何这个整数来?
参考:Convert from DateTime to INT,但是这是我需要在C#中
我不明白你为什么会需要代表DateTime
在C#中的一个整数,但你可以使用这个方法:
public static int DateTimeToInt(DateTime theDate)
{
return (int)(theDate.Date - new DateTime(1900, 1, 1)).TotalDays + 2;
}
你可以使用这个方法的反向操作:
public static DateTime IntToDateTime(int intDate)
{
return new DateTime(1900, 1, 1).AddDays(intDate - 2);
}
Thanku这么多,我需要这个,因为有数据库中的字段表示DateTime作为这个整数,我想它是为了优化.... 和我正在开发窗口应用程序,这是现有应用程序的扩展......并且只有沟通的方式是通过数据库服务,所以我需要在我的PCL的所有操作中执行 –
@阿伦:[坏习惯踢:处理日期/范围查询](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/16/bad-habits-to-kick-mishandling-date-range-queries.aspx) - 您应该* *不会**将日期存储为字符串或整数 - 您只是以这种方式寻求麻烦。使用'DATE'或'DATETIME'数据类型! –
@克劳斯请你提一下为什么这个+/- 2为? – Rezoan
扩展到投日期时间为timestamp
public static int DateTimeToInt(this DateTime theDate)
{
int unixTime = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
return unixTime;
}
更好的投日期时间长,使用属性DateTime.Ticks
此
作为一个时间戳? –
你为什么想在C#中做到这一点? –
,因为我正在使用服务的应用程序,我不能在那里使用sql程序 –