在c#中将时间字符串转换为DateTime

时间:2016-03-21 02:50:54

标签: c# datetime

如何根据字符串

获取DateTime

e.g: 如果我有mytime = "14:00"

如何以当前日期作为日期获取DateTime对象,除非当前时间已经是14:00:01,那么日期应该是第二天。

4 个答案:

答案 0 :(得分:10)

这就像使用精确格式解析DateTime一样简单。

可实现
var dateStr = "14:00";
var dateTime = DateTime.ParseExact(dateStr, "H:mm", null, System.Globalization.DateTimeStyles.None);

DateTime.ParseExact() (msdn link)方法只允许您传递希望的格式字符串作为解析字符串以返回DateTime结构。现在,当没有提供日期部分时,此字符串的Date部分将默认为今天的日期。

回答第二部分

  

如何将DateTime对象的当前日期作为日期,除非   当前时间已经是14:00:01,那么日期应该是第二天。

这也很简单,因为我们知道DateTime.ParseExact将返回今天的日期(因为我们已经提供了一个日期部分),我们可以将我们的解析日期与DateTime.Now进行比较。如果DateTime.Now大于我们的解析日期,我们会在解析日期添加1天。

var dateStr = "14:00";

var now = DateTime.Now;
var dateTime = DateTime.ParseExact(dateStr, "H:mm", null, System.Globalization.DateTimeStyles.None);

if (now > dateTime)
    dateTime = dateTime.AddDays(1);

答案 1 :(得分:3)

您可以使用DateTime.TryParse():将日期和时间的指定字符串表示转换为其DateTime等效值,并返回一个值,指示转换是否成功。

string inTime="14:00";
DateTime d;

if(DateTime.TryParse(inTime,out d))
{
   Console.WriteLine("DateTime : " + d.ToString("dd-MM-yyyy HH:mm:SS"));
} 

工作示例here

答案 2 :(得分:1)

有一个日期时间构造函数
public DateTime(
    int year,
    int month,
    int day,
    int hour,
    int minute,
    int second
)

然后解析字符串以查找小时,分钟和秒,并使用Datetime.Now.Day提供的其他参数将其提供给此构造函数。

答案 3 :(得分:1)

我想你想做这样的事情:

string myTime = "14:00";            
var v = myTime.Split(":".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
DateTime obj = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, int.Parse(v[0]), int.Parse(v[1]), DateTime.Now.Second);