簡體   English   中英

從字符串中提取時間

[英]Extract time from String

我有這個字符串,這是cmd中的net time \\ SERVER_NAME命令的結果:

\\ SERVER_NAME的當前時間是2014/3/31上午9:35:57

該命令成功完成。

我想提取此字符串中顯示的時間(在這種情況下為9:35:37 AM)。 我認為這是使用一些正則表達式完成的。 有人可以幫忙嗎?

編輯

我絕對希望使用正則表達式,而不僅僅是針對一台服務器運行此命令。

編輯2

我最終選擇了本文檔( http://msdn.microsoft.com/zh-cn/library/aa370612(v=vs.85).aspx )中提供的API,由於使用NTP,因此它是一個可靠的API 。

獲取一天中的遙遠時間...

如果您嘗試與具有多種區域性的機器進行對話-並且您所運行的系統的區域性也可能有所不同-我強烈建議您避免使用這種基於文本的方法。

而是考慮使用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​​與服務器通信-我真的希望有一種無需使用文本處理的方式即可完成此操作...

如果您確實真的只想“原始字符串的任何部分都在日期之后”,那么可以,可以使用正則表達式-但我認為將值解析為日期/時間以確保它是更好的選擇真正的相關數據。

僅與時間匹配的最簡單的正則表達式如下所示:

\d\d?\:\d\d\:\d\d\s?(A|P)M

那是你追求的嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM