我的文本框接受时间格式,如下午12:40但是想将它转换为时间格式,如此12:40:00基本上没有PM或AM。以下是我到目前为止的情况:
string StartTime = ((TextBox)TestDV.FindControl("txtBST")).Text.ToString();
感谢
答案 0 :(得分:8)
一种选择是解析成DateTime
然后再回到字符串:
string s = "12:40 PM";
DateTime dt = DateTime.Parse(s);
string s2 = dt.ToString("HH:mm:ss"); // 12:40:00
但请注意,大多数操作使用DateTime
与DateTime
的字符串表示形式相比效果更佳。
答案 1 :(得分:5)
首先,您应该将其解析为DateTime
,然后对其进行格式化。听起来您的输入格式类似hh:mm tt
,输出格式为HH:mm:ss
。所以,你有:
string input = "12:40 PM"
DateTime dateTime = DateTime.ParseExact(input, "hh:mm tt",
CultureInfo.InvariantCulture);
string output = dateTime.ToString("HH:mm:ss", CultureInfo.InvariantCulture);
请注意:
DateTime.ParseExact
,如果解析失败会抛出异常;你可能想要使用DateTime.TryParseExact
(这取决于你的情况)hh:mm
,但你可能想要h:mm
...你会期待“1 PM”还是“01 PM”?答案 2 :(得分:3)
由于你把它作为字符串引入,这实际上很容易。
string StartTime = ((TextBox)TestDV.FindControl("txtBST")).Text.ToString();
DateTime dt = new DateTime();
try { dt = Convert.ToDateTime(StartTime); }
catch(FormatException) { dt = Convert.ToDateTime("12:00 AM"); }
StartTime = dt.ToString("HH:mm");
所以你带上你的字符串,然后把它转换成日期。如果输入不是有效日期,则默认为00:00。无论哪种方式,它都会为您提供一个字符串和一个DateTime对象,具体取决于您还需要做什么。两者都代表相同的值,但字符串将采用24小时格式。
干杯!!