从长格式中获取时间
本文关键字:获取 取时间 格式 | 更新日期: 2023-09-27 18:24:45
我想从这种类型的字符串中计时
30-12-1899 14:32:54
string ReportTime = JobReportTime.Substring(9, 19);
但当我使用Substring时,会给我一个错误"索引和计数必须引用字符串中的一个位置。参数名称:count"
Substring的第一个参数是startIndex。在您的情况下,这将是:
string ReportTime = JobReportTime.Substring(11); // returns "14:32:54"
如果日期和月份部分也可以是个位数(例如"1-4-1899 14:32:54"),则提取空格字符后的部分可能更安全:
string ReportTime = JobReportTime.Substring(JobReportTime.IndexOf(' ') + 1);
子字符串参数是起始位置和长度,而不是起始索引和结束索引。您可以使用.Substring(11, 8)
,但由于如果不指定长度,Substring将只返回字符串的其余部分,因此.Substring(11)
将提供您想要的内容。当然,您可能应该考虑将字符串解析为DateTime
,然后提取时间信息,正如其他人所建议的那样。
试试这个(编辑的最后一个答案)
DateTime time = DateTime.Parse("30-12-1899 14:32:54");
string ReportTIme = time.ToString("HH:mm:ss tt").ToString();
如果需要进一步的功能,可以将其转换为DateTime:
var dt = Convert.ToDateTime("30-12-1899 14:32:54");
time = dt.TimeOfDay.ToString();
// returns "14:32:54"
我建议您使用DateTime.ParseExact方法(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
。