2013-04-17 40 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);