2013-02-06 64 views
4

我在一些繼承的遺留代碼中遇到以下方法。感覺它應該可以用一個簡單的「return DateTime.Now」來替換。然而,看起來如此明顯,我不想在這種情況下進行更改,因爲我錯過了此代碼的一些隱藏意圖。此DateTime代碼是否執行與DateTime.now不同的任何操作

public static DateTime GetTimeStamp() 
{ 
    return new DateTime(DateTime.Now.Ticks); 
} 

我的猜測是,當時誤以爲實施者認爲「DateTime.Now」返回一個參考,而不是一個新的實例,但有沒有人遇到這樣或知道它可能已經實現了這個真正的理由辦法。

+1

'DateTime'是一個不可變的類,所以參考與新實例無關。 – mellamokb

+1

我假設你的傢伙本來想回報別的東西。或者他希望有能力改變實施。但是,他可能已經返回了'DateTime.Now'。 –

+0

我聽說有人認爲按照上面提到的方式做這件事比較精確。雖然我很難相信。 – twaldron

回答

6

它與DateTime.Now相同。從日期時間獲取蜱,並把它在構造會給你同樣的日期時間:

msdn => DateTime(int64 ticks)

但是你可以從DateTime.Now失去的時間段意識:

The Kind property is initialized to Unspecified. 

For applications in which portability of date and time data or a limited degree of time zone awareness is important, you can use the corresponding DateTimeOffset constructor. 
+0

備註部分說明它使用['Kind.Unspecified'](http://msdn.microsoft.com/en-us/library/shx7s921.aspx),而['DateTime.Now'](http:// msdn使用['Kind.Local'](http://msdn.microsoft.com/en-us/library/shx7s921.aspx)。 –

+0

謝謝,不得不愛堆棧溢出。只要將它刪除,認爲這只是奇怪的編碼就太容易了。但是隨着代碼庫的大小和缺少測試(這就是我所添加的內容),不可能說是否有人稱它爲依賴於「kind」是一種價值還是另一種價值。 –

相關問題