我有接受像这样的时间格式的文本框 12:40 PM 但想将其转换为像这样的时间格式 12:40:00 基本上没有 PM 或 AM。这是我到目前为止所拥有的:
string StartTime = ((TextBox)TestDV.FindControl("txtBST")).Text.ToString();
谢谢
一种选择是解析为 aDateTime
然后返回一个字符串:
string s = "12:40 PM";
DateTime dt = DateTime.Parse(s);
string s2 = dt.ToString("HH:mm:ss"); // 12:40:00
但是请注意,大多数操作使用 aDateTime
与 a 的字符串表示相比效果更好DateTime
。
首先,您应该将其解析为 a 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
了 which 会抛出异常;您可能想要使用DateTime.TryParseExact
(这取决于您的情况)hh:mm
,但您可能想要h:mm
……您会期待“1 PM”还是“01 PM”?由于您将其作为字符串引入,因此这实际上很容易。
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 小时格式。
干杯!!