我有这个字符串,它的结果是净时间\SERVER_NAMEcmd 中的命令:
\SERVER_NAME 的当前时间是 3/31/2014 9:35:57 AM
命令成功完成。
我想提取该字符串中显示的时间(在本例中为 9:35:37 AM)。
我认为这是使用一些正则表达式完成的。有人可以帮忙吗?
Edit
我绝对想使用正则表达式,该命令不仅仅针对一台服务器运行。
Edit 2
我最终选择了本文档中提供的 API (http://msdn.microsoft.com/en-us/library/aa370612(v=vs.85).aspx),它显然是一个可靠的,因为它使用 NTP。
获取一天中的远程时间...
如果您尝试与具有多种文化的机器对话 - 并且您所在系统的文化running也可能有所不同 - 我强烈建议您避免这种基于文本的方法。
相反,请考虑使用NetRemoteTOD功能。可能有一个托管版本,但如果没有,您可以使用 P/Invoke 来调用它 - 请参阅相关 pinvoke.net 条目。这将使您获得适当的值没有任何文本处理,让事情变得更加干净。
原答案(可能对其他人有用)
好吧,我会用DateTime.Parse
而不是正则表达式,在计算出哪一部分是实际日期/时间之后。例如:
int startIndex = text.IndexOf(" is ") + 4;
DateTime dateTime = DateTime.Parse(text.Substring(startIndex));
这将得到作为DateTime
- 然后您可以根据需要格式化时间部分,例如
string time24 = dateTime.ToString("HH:mm:ss"); "09:35:37"
string time12 = dateTime.ToString("h:mm:ss tt"); "9:35:37 AM"
请注意,这很可能是文化敏感的;该代码很可能不适用于其他文化。如果你想让这个更可靠,我会停止使用net time
而是使用 API 与服务器对话 - 我真的会hope有一种方法可以在不使用文本处理的情况下做到这一点......
If you 真的真的只是想要“无论原始字符串的部分在日期之后”,那么是的,您可以使用正则表达式 - 但我认为最好将值解析为日期/时间,以确保它确实是相关数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)