C#将字符串转换为日期时间

7

我有一个字符串,形如"24:00:00",我想将其转换为时间。我尝试使用convert和DateTime.Parse,但似乎还需要日期。是否有一种方法只获取时间,或者我必须同时提供日期?


7
FYI,24小时制的时间从0:00:00到23:59:59,而24:00:00将是无效的。 - crashmstr
请看这里:https://dev59.com/hVLTa4cB1Zd3GeqPXRpf - Garrett Vlieger
6个回答

15

如果你只关心时间部分,考虑使用TimeSpan而不是完整的DateTime

var time = TimeSpan.Parse("23:59:59");

我知道有一些奇怪的日期格式...但是在时间中间放一个月份对我来说还是新鲜事;) - musefan
糟糕!我把月份和分钟搞混了!在你告诉我之前已经将其删除了。 - Anthony Pegram

3

我不确定"24:00:00"是否是一个有效的时间。无论如何,您不需要指定日期,可以执行...

DateTime time = DateTime.ParseExact("23:59:59", "HH:mm:ss", null);

如果你需要表示一个具体的时间点,建议使用DateTime。如果你表示的是一段持续时间(可以超过23小时59分钟59秒),那么就可以使用TimeSpan...
TimeSpan time = TimeSpan.ParseExact("23:59:59", "HH:mm:ss", null);

不要忘记,如果您不确定输入是否有效,则两者都有TryParseExact版本。

2
您可以使用DateTimeFormatInfo来格式化您的日期时间。
string strDate = "23:10:00";
DateTimeFormatInfo dtfi = new DateTimeFormatInfo();
dtfi.ShortTimePattern = "hh:mm:ss";
dtfi.TimeSeparator = ":";
DateTime objDate = Convert.ToDateTime(strDate, dtfi);
Console.WriteLine(objDate.TimeOfDay.ToString());

1

我认为你需要使用 TimeSpan.Parse 代替?


0

怎么样?

var time = new DateTime.Today;
var str = "24:00:00";
var split = str.split(":");

time.AddHours(Convert.ToInt32(split[0]));
time.AddMinutes(Convert.ToInt32(split[1]));
time.AddSeconds(Convert.ToInt32(split[2]));

希望这能帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接