2013-04-17 75 views
2

我試圖將此例如2012年12月31日格式轉換爲DateTime,但是當我運行此代碼轉換工作,但時間不是最新的。我期待轉換爲DateTime,但與當前時間:使用當前時間將字符串(Textbox.text)轉換爲DateTime

例子:當我運行下面的代碼,然後輸入日期:2012年12月31日

我得到:2012年12月31日12:00: 6:00 AM

我不知道如何使用TimeOfDay屬性來獲取當前的時間,而不是12:00:00 AM

Console.Write("Enter Current Date: "); 

    string strMyDate = Console.ReadLine(); 

    DateTime dt = DateTime.Parse(strMyDate); 

    Console.WriteLine(dt); 

    Console.ReadKey(); 

回答

9

你只能提取從DateTime.Now時間並將其添加到您的手動輸入日期,例如

var time = dt.Add(DateTime.Now.TimeOfDay); 

作爲附加說明,我會用DateTime.TryParse代替,如由用戶輸入的值可以不是可解析的日期,例如

DateTime dt; 
var isDate = DateTime.TryParse(strMyDate, out dt); 
if(isDate) 
{ 
    var time = dt.Add(DateTime.Now.TimeOfDay); 
} 
+0

謝謝!這些都是寶貴的解決方案。現在我知道一些我從未知道的東西。有一天,我希望回到這些好處,但現在,我仍然是一個盲目的狂人,隱喻。謝謝喬治! – Asynchronous

1

DateTime.Now會給你當前的時間。將第一個值的日期部分與Now的時間部分結合起來得到結果。

1

添加到您的字符串:

string strMyDate = Console.ReadLine(); 
strMyDate = string.Format("{0} {1}", 
    strMyDate, 
    DateTime.Now.ToShortTimeString()); 
1

沒有實際編譯這一點,但這樣的事情應該工作:

DateTime dt = DateTime.Parse("12/31/2012 " + DatTime.Now.TimeOfDay.ToString()); 
1

您可以建立從小時,分鐘和秒的時間部分DateTime.Now;

string strMyDate = "12/31/2012"; 
DateTime dt = DateTime.Parse(strMyDate); 
DateTime current = DateTime.Now; 
dt = dt.AddHours(current.Hour).AddMinutes(current.Minute).AddSeconds(current.Second); 
Console.WriteLine(dt);