如何使用C#将字符串格式的时间转换为日期时间格式

时间:2013-04-30 18:05:46

标签: c# asp.net

我的文本框接受时间格式,如下午12:40但是想将它转换为时间格式,如此12:40:00基本上没有PM或AM。以下是我到目前为止的情况:

string StartTime = ((TextBox)TestDV.FindControl("txtBST")).Text.ToString();

感谢

3 个答案:

答案 0 :(得分:8)

一种选择是解析成DateTime然后再回到字符串:

string s = "12:40 PM";

DateTime dt = DateTime.Parse(s);

string s2 = dt.ToString("HH:mm:ss");  // 12:40:00

但请注意,大多数操作使用DateTimeDateTime的字符串表示形式相比效果更佳。

答案 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”?
  • 你不解析秒数,所以那部分总是0 ......那好吗?

答案 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小时格式。

干杯!!