当用户填写表单时,他们使用下拉菜单表示他们想要安排测试的时间。此下拉菜单包含12小时上午/下午表单中每天15分钟的所有时间。例如,如果用户选择4:15 pm,则服务器将字符串"4:15 PM"
以表单submittion的形式发送到Web服务器。如何将12小时时间字符串转换为C#TimeSpan?
我需要一些如何将此字符串转换为Timespan,所以我可以将它存储在我的数据库的时间字段(与LINQ到SQL)。
任何人都知道将AM/PM时间字符串转换为时间跨度的好方法吗?
当用户填写表单时,他们使用下拉菜单表示他们想要安排测试的时间。此下拉菜单包含12小时上午/下午表单中每天15分钟的所有时间。例如,如果用户选择4:15 pm,则服务器将字符串"4:15 PM"
以表单submittion的形式发送到Web服务器。如何将12小时时间字符串转换为C#TimeSpan?
我需要一些如何将此字符串转换为Timespan,所以我可以将它存储在我的数据库的时间字段(与LINQ到SQL)。
任何人都知道将AM/PM时间字符串转换为时间跨度的好方法吗?
您可能想要使用DateTime
而不是TimeSpan
。您可以使用DateTime.ParseExact
将字符串解析为DateTime对象。
string s = "4:15 PM";
DateTime t = DateTime.ParseExact(s, "h:mm tt", CultureInfo.InvariantCulture);
//if you really need a TimeSpan this will get the time elapsed since midnight:
TimeSpan ts = t.TimeOfDay;
尝试:
string fromServer = <GETFROMSERVER>();
var time = DateTime.Parse(fromServer);
,让你的时间,如果你创建的结束时间,以及你可以通过做算术W/datetime对象获得的时间跨度。
试试这个:
DateTime time;
if(DateTime.TryParse("4:15PM", out time)) {
// time.TimeOfDay will get the time
} else {
// invalid time
}
最简单的方法是这样的:
var time = "4:15 PM".ToTimeSpan();
。
这需要Phil的代码并将其放入辅助方法中。这是微不足道的,但它使一个行电话:
public static class TimeSpanHelper
{
public static TimeSpan ToTimeSpan(this string timeString)
{
var dt = DateTime.ParseExact(timeString, "h:mm tt", System.Globalization.CultureInfo.InvariantCulture);
return dt.TimeOfDay;
}
}
我喜欢李的回答是最好的,但如果你想使用的TryParse acermate是正确的。要结合并获得时间跨度,请执行以下操作:
public TimeSpan GetTimeFromString(string timeString)
{
DateTime dateWithTime = DateTime.MinValue;
DateTime.TryParse(timeString, out dateWithTime);
return dateWithTime.TimeOfDay;
}
此示例实际上不适用于字符串,如“11:00 PM”。大写“H”格式表示24小时制。使用小写“h”可以解决该问题。 – 2013-07-11 21:01:43
这是一个非常重要的细节。确认和编辑。 – 2013-12-26 21:41:47