2011-08-30 81 views
1

我有數據庫,其中數據存儲在時間戳條目,即鍵。函數創建24小時時間戳? c#

我需要一個函數,可以將DateTime.Now這樣的日期轉換爲一個時間戳記間隔,以今天爲例,8月30日00:00:00h至8月30日23:59:59h。

我怎麼寫這個函數?

我想要的是像做

從表中選擇所有其中timestamp是A和B之間。(那些和b的值將代表初始和終端時間戳一天。)

我沒有創建數據庫,我不能修改它,我只能查詢它。

+0

通過在MSDN中查找:http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx – jgauffin

+0

使用[DateTime.Today,DateTime.Today.AddDays(1).AddMilliseconds(-1)] – Zruty

+1

有點偏離主題,但使用鍵的時間戳可能是一個非常糟糕的主意。 – Dyppl

回答

0

這將返回代表你可能要間隔一個元組:

Tuple<DateTime,DateTime> GetDateInterval(DateTime datetime) { 
    var start = datetime.Date; 
    var end = start.AddDays(1).AddTicks(-1); 
    return new Tuple<DateTime, DateTime>(start, end); 
} 

用法:

var interval = GetDateInterval(DateTime.Now); 
Console.WriteLine(interval.Item1); 
Console.WriteLine(interval.Item2); 

輸出:

30.08.2011 0:00:00 
30.08.2011 23:59:59 
0

也許DateTime.Now.TimeOfDay.Ticks是你在找什麼。

0

很難告訴你想要的東西,但在這裏是一種方式來獲得區間:

var start = DateTime.Today; 
var end = start.AddDays(1).AddSeconds(-1); 

很難回答你應該如何,因爲你沒有提供有關足夠的細節的值存儲在數據庫表格佈局。

+1

我將使用'.AddTicks(-1)'。 – CodesInChaos

0

我想你可以嘗試使用結構TimeInterval:

public struct TimeInterval 
{ 
    private readonly DateTime _startTime; 
    private readonly DateTime _endTime; 

    public DateTime StartTime { get { return _startTime; } } 
    public DateTime EndTime { get { return _endTime; } } 

    public TimeInterval(DateTime now) 
    { 
     _startTime = now.Date; 
     _endTime = now.Date.AddDays(1).AddTicks(-1); 
    } 
} 

你可以稱它爲:

TimeInterval day = new TimeInterval(DateTime.Now); 
0

如果你有一天的範圍內,就可以計算出蜱withing一天:

// ---------------------------------------------------------------------- 
public long GetTicksOfDay(DateTime moment) 
{ 
    return moment.Subtract(moment.Date).Ticks; 
} // GetTicksOfDay 
0

我想你需要的是一個TimeSpan

您可以僅從一個DateTime中減去另一個DateTime,並且結果將是差異的TimeSpan。

+0

但結果只會有兩個日期之間的差異,這已知是預先24小時,這使得這個函數有點沒用 – Dyppl