2014-02-20 56 views
18

我在C#是絕對新的(我從爪哇來到),我有一個非常愚蠢的問題如何初始化DateTime字段?

我要初始化一些日期時間領域爲對象,但我有一些問題的話。

特別是我想inizialize這樣這些領域:

mySmallVuln.Published = '1998,04,30'; 
mySmallVuln.LastUpdated = '2007,11,05'; 

但Visual Studio中籤我作爲錯誤

字符太多字符文字

我錯過了什麼?如何解決它?

回答

26
mySmallVuln.Published = new DateTime(1998,04,30); 

或許這樣

var date = DateTime.MinValue; 
if (DateTime.TryParse("1998/04/30", out date)) 
{ 
    //Sucess... 
    mySmallVuln.Published = date; 
} 
0

使用本

//年,月,日

mySmallVuln.Published=new DateTime(2011,11,4); 
2

要初始化DateTime值可以使用DateTime構造函數:

mySmallVuln.Published = new DateTime(1998,04,30); 
6

兩者都是相同....

mySmallVuln.Published = new DateTime(1998,04,30,0,0,0); 
mySmallVuln.LastUpdated = new DateTime(2007,11,05,0,0,0); 

mySmallVuln.Published = new DateTime(1998,04,30); 
mySmallVuln.LastUpdated = new DateTime(2007,11,05); 
,那麼就可以在參數分別分配時,分和秒的第一方法

最後三個參數。

0

你可以解析一個字符串,就像你的。或者你可以用數字來創建一個DateTime對象。

DateTime date1 = new DateTime(1998, 04, 30); 
DateTime date2 = DateTime.ParseExact("1998,04,30", "yyyy,MM,dd", CultureInfo.InvariantCulture); 
3

您正在使用字符文字'',它只能包含一個字符。如果您想使用字符串文字,請改爲使用""

C#不支持DateTime -literals而不是VB.NET#4/30/1998#)。

除此之外,字符串不是DateTime。如果你有一個字符串,你需要把它解析到DateTime第一:

string published = "1998,04,30"; 
DateTime dtPublished = DateTime.ParseExact(published, "yyyy,MM,dd", CultureInfo.InvariantCulture); 
mySmallVuln.Published = dtPublished; 

,或者你可以通過構造函數創建一個DateTime

DateTime dtPublished = new DateTime(1998, 04, 30); 

,或者因爲你的字符串包含年,月和日串,使用String.Splitint.Parse

string[] tokens = published.Split(','); 
if (tokens.Length == 3 && tokens.All(t => t.All(Char.IsDigit))) 
{ 
    int year = int.Parse(tokens[0]); 
    int month = int.Parse(tokens[1]); 
    int day = int.Parse(tokens[2]); 
    dtPublished = new DateTime(year, month, day); 
} 
1

不幸的是,C#不支持日期文字。您應該更改您的代碼並使用new DateTime(..)實例化DateTime對象,如他的答案中所示的thomas。

只是爲了擴展這個話題:VB.NET支持使用#字符(具有諷刺意味的)日期文字。這是他們可以表示,從MSDN documentation

Dim d As Date 
d = # 8/23/1970 3:45:39AM # 
d = # 8/23/1970 #    ' Date value: 8/23/1970 12:00:00AM. 
d = # 3:45:39AM #    ' Date value: 1/1/1 3:45:39AM. 
d = # 3:45:39 #    ' Date value: 1/1/1 3:45:39AM. 
d = # 13:45:39 #    ' Date value: 1/1/1 1:45:39PM. 
d = # 1AM #     ' Date value: 1/1/1 1:00:00AM. 
d = # 13:45:39PM #    ' This date value is not valid. 
1

如果你搜索你的錯誤,你會find

這是因爲,在C#中,單引號(」 ')表示(或封裝)單個字符,而雙引號(「」)用於字符串。

所以你嘗試:

DateTime foo = "2014,02,20"; 

其中產量:

不能隱如果轉換類型 '字符串' 到 'System.DateTime的'

現在搜索錯誤,你會find

int StartYear = 2012; 
int StartMonth = 06; 
int StartDay = 15; 

DateTime dt = new DateTime(StartYear, StartMonth, StartDay); 
9
DateTime d = default(DateTime); 

默認關鍵字適用於所有數據類型呢!