我希望实现this的反转,也就是说,我希望将格式为string
的{{1}}转换为hh:mm tt
,并将其归零。
例如,TimeSpan
转换为09:45 pm
。
答案 0 :(得分:61)
最简单的方法可能是使用DateTime
将其解析为DateTime.ParseExact
,然后使用TimeOfDay
来确定TimeSpan
。
DateTime dateTime = DateTime.ParseExact(text,
"hh:mm tt", CultureInfo.InvariantCulture);
TimeSpan span = dateTime.TimeOfDay;
当你 指定am / pm指示符时,在几个小时内看到前导0很奇怪。格式字符串中可能需要“h”而不是“hh”,以允许“9:45 pm”而不是“09:45 pm”。
(我还认为首先使用TimeSpan
是一种奇怪的用法,但是在我看来,.NET日期/时间类型有些混乱。我建议使用{{3但是我有偏见:)
答案 1 :(得分:10)
这项工作适合我。
TimeSpan ts= DateTime.Parse("8:00 PM").TimeOfDay;
答案 2 :(得分:0)
TimeSpan tspan;
tspan = DateTime.ParseExact("01:45 PM", "hh:mm tt", CultureInfo.InvariantCulture).TimeOfDay;
答案 3 :(得分:0)
你可以将meridiem时间转换为时间跨度,也可以将时间跨度改为meridiem time with date,只使用下面的代码snipet ...
TimeSpan ts = DateTime.Parse("8:00 PM").TimeOfDay;
DateTime dateWithTimeSlot = DateTime.Today+ ts;
//for getting MM/dd/yyyy hh:mm tt format
string dateWithMeridiemTimeSlot =
dateWithTimeSlot.ToString("MM/dd/yyyy hh:mm tt: ", CultureInfo.InvariantCulture);
Console.WriteLine("For getting MM/dd/yyyy hh:mm tt format: "+dateWithMeridiemTimeSlot);
//for getting only hh:mm tt format
string meridiemTimeSlot =
dateWithTimeSlot.ToString("hh:mm tt", CultureInfo.InvariantCulture);
Console.WriteLine("For getting only hh:mm tt format: " + meridiemTimeSlot);
Console.ReadLine();
让我们享受!
由于
答案 4 :(得分:0)
对我有用的唯一方法是 Convert.ToDateTime(str).TimeOfDay。 ParseExact 导致错误!
gv.save()