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

Har*_*rts 10 c# datetime

如何根据字符串获取DateTime

例如:如果我有 mytime = "14:00"

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

Nic*_*ico 12

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

可以实现

var dateStr = "14:00";
var dateTime = DateTime.ParseExact(dateStr, "H:mm", null, System.Globalization.DateTimeStyles.None);
Run Code Online (Sandbox Code Playgroud)

DateTime.ParseExact()(MSDN链接)方法只允许你传递你想作为你解析字符串返回格式字符串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);
Run Code Online (Sandbox Code Playgroud)


suj*_*lil 7

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

string inTime="14:00";
if(DateTime.TryParse(inTime,out DateTime dTime))
{
   Console.WriteLine($"DateTime : {dTime.ToString("dd-MM-yyyy HH:mm:SS")}");
} 
Run Code Online (Sandbox Code Playgroud)

工作示例在这里