2009-12-29 146 views
2

我不能相信這個表面上明顯的問題找到答案時失敗了多長時間。我如何將日期時間轉換爲C#中的日期

Date SomeRandomMadeUpDate = DateTime.Now.AddMonths(randomMonths).Date; 

Cannot implicitly convert type 'System.DateTime' to 'System.Date' I can even call:

Date.Now 

但調用.AddDays它返回一個DateTime

同樣,問題是:如何把一個C#DateTime成C#Date

回答

3

我不得不看它,因爲我沒有」 t知道.NET 4.0中有一個Date類型,但顯然在System.Dataflow.dll中有一個。只需使用構造,以日期時間作爲參數:

Date d = new Date(dt); 
+0

是的。好的工作,並且非常感謝。現在我知道更多! – thepaulpage 2009-12-29 16:50:47

11

沒有「日期」類型等。這都是日期時間。只是當你打電話給.Date時,那天你會得到那個DateTime。

如果你在談論VB.NET中的「Date」數據類型,那就是DateTime,不管你信不信。

+2

那麼爲什麼我會得到我收到的錯誤? – thepaulpage 2009-12-29 16:32:13

+0

不知道,我只是在VB中試過它,它沒有任何問題... – 2009-12-29 16:34:42

+0

我試過它在C#中沒有System.Date類型... – 2009-12-29 16:39:18

10

.NET沒有代表日期的類型 - 這樣的問題使我開始Noda Time(它甚至還沒有準備好用於生產)。

DateTime.Date返回與原始日期相同的另一個DateTime,但在午夜。這基本上是最接近有一個Date類型在.NET :(請注意,如果你想今天的日期,那麼DateTime.Today是調用DateTime.Now.Date的一個簡單的方法。

我不知道爲什麼編譯器給了一個錯誤這表明,有消息是一個System.Date型 - 它沒有我的機器上:

using System; 

class Test 
{ 
    static void Main() 
    { 
     Date today = DateTime.Now.Date; 
    } 
} 

給出了這樣的錯誤:

Test.cs(7,9): error CS0246: The type or namespace name 'Date' could not be found (are you missing a using directive or an assembly reference?)

你可以給出一個類似的簡短但完整的程序,它顯示你收到的錯誤信息?你有其他一些庫參考哪個確實有一個System.Date類型? (湯米CARLIER暗示,也許System.Dataflow?)

+1

System.Dataflow.dll(SQL Server建模的一部分)有一個System.Date類型。 – 2009-12-29 16:36:44

+3

@Tommy:那是我的懷疑(見編輯:) - 這真是太可怕了。某些特定於SQL Server的應該不會對「System」名稱空間起作用: – 2009-12-29 16:37:25

+0

@Tommy:不是這樣的。 – 2009-12-29 16:44:39

1

嘗試做以下

string onlyDate = DateTime.Now.ToString("dd/MM/yyyy"); 

這將只返回日期作爲字符串,所以我認爲你可以使用它作爲

Date dateNow = new Date(onlyDate); 
相關問題