我想从这个类型字符串中抽出时间
30-12-1899 14:32:54
string ReportTime = JobReportTime.Substring(9, 19);
但是当我使用Substring时给出错误“索引和计数必须引用字符串中的位置。 参数名称:count“
答案 0 :(得分:4)
Substring的第一个参数是startIndex。在你的情况下,这将是:
string ReportTime = JobReportTime.Substring(11); // returns "14:32:54"
如果日期和月份部分也可以是单位数字(例如“1-4-1899 14:32:54”),那么在空格字符后提取部分可能更安全:
string ReportTime = JobReportTime.Substring(JobReportTime.IndexOf(' ') + 1);
答案 1 :(得分:0)
子串参数是起始位置和长度,而不是起始和结束索引。您可以使用.Substring(11, 8)
,但如果您没有指定长度,则Substring将返回字符串的其余部分,.Substring(11)
将为您提供您所追求的内容。当然,您应该考虑将字符串解析为DateTime
,然后像其他人所建议的那样提取时间信息。
答案 2 :(得分:0)
试试这个(编辑的最后一个答案)
DateTime time = DateTime.Parse("30-12-1899 14:32:54");
string ReportTIme = time.ToString("HH:mm:ss tt").ToString();
答案 3 :(得分:0)
如果您需要更多功能,可以将其转换为DateTime:
var dt = Convert.ToDateTime("30-12-1899 14:32:54");
time = dt.TimeOfDay.ToString();
// returns "14:32:54"
答案 4 :(得分:0)
我建议你使用DateTime.ParseExact Method (String, String, IFormatProvider)。
const string dateTimeFormat = "dd-MM-yyyy HH:mm:ss";
const string dateTimeString = "30-12-1899 14:32:54";
DateTime dateTime = DateTime.ParseExact(dateTimeString, dateTimeFormat, CultureInfo.InvariantCulture);
Console.WriteLine(dateTime.TimeOfDay);
我认为代码有点清晰:它指定了如何从字符串中明确地解析DateTime
。