2011-06-21 149 views
0

我有一個字符串變量st和我有指定這個字符串變量輸出使用下面的語句轉換日期時間字符串

string st; 

if(dt!=null) 
{ 
    if(dt.rows.count> 0) 
    { 
     st = dt.Rows[3]["timeslot_StartTime"].ToString(); 
    } 
} 

未來形式數據表,現在我想這個字符串變量轉換爲日期時間屬性我已經通過使用以下語句完成了這一項:

DateTime pt1 = DateTime.Parse(st); 

但它顯示錯誤在st說use of unassigned local varaible "st"

+0

凡在你的代碼你把那個正在給錯誤的行? – Becuzz

+0

給我們所有的相關代碼。看起來你的'st'可能超出範圍。 –

回答

0

也許你正在使用的變量在從一個地方它分配一個不同的範圍,像

string st; 
if (condition) { 
    st = dt.Rows[3]["timeslot_StartTime"].ToString(); 
} 
DateTime pt1 = DateTime.Parse(st); 

所以,st並不總是初始化(這是隻有在當條件被驗證)。嘗試代替

string st; 
if (condition) { 
    st = dt.Rows[3]["timeslot_StartTime"].ToString(); 
    DateTime pt1 = DateTime.Parse(st); 
} 
3

初始化st爲空或的String.Empty

string st = null; 

,並要在安全方面,在解析之前檢查st爲空。

1

st初始值,如

string st = String.Empty; 
1

嘗試以這種方式definning ST

string st = "" 
1

嘗試這樣做,

string st = null; 

檢查ST如果它之前不爲空解析

0

你只分配stif邏輯裏面。如果您嘗試在這些塊之外使用st,則會遇到「未分配」錯誤。

要麼

  • 給變量的默認值,當你初始化
    • 的東西,是語法分析,或者記得要包括檢查你嘗試分析
  • 或之前在您從數據表中檢索值時嘗試將其解析爲DateTime

當然,假設您正在從DataTable中提取值,如果該值爲已經作爲日期存儲在表中,則忘記ToString()並完全解析。

DateTime date = (DateTime)dt.Rows[x]["ColumnName"]; 
+0

嗨如何檢查當前時間是在兩個給定時間之間的日期時間不在字符串 – user682417

+0

@user,請不要在評論中提問。如果您有與原件相關的內容,請將其添加到原件中。然而,你的問題似乎是一個不同的邏輯,所以它應該是它自己的新問題。但爲了讓你開始,比較一個給定的日期大於開始日期和小於結束日期。如'bool isBetween =(startDate <= yourDate)&&(yourDate <= endDate);' –

0

您需要初始化字符串。現在任何初始化或賦值都在if塊中執行。編譯器檢測到這一點,並考慮到它可能從未初始化。

string st = string.Empty; 

作爲一個側面說明,它是更安全的使用方法姐姐的TryParse()的對話,以確保您不會有任何拋出的意外異常由於無效的格式問題。 如果轉換成功的方法將返回true,這使得一個乾淨的外觀爲這樣:

 if (dt!=null) 
     { 
      if(dt.rows.count> 0) 
      { 
       st = dt.Rows[3]["timeslot_StartTime"].ToString(); 
      } 
     } 

     DateTime dt = DateTime.MinValue; 
     if (DateTime.TryParse(st, out dt)) 
     { 
      //was successful and do something here 
     } 
相關問題