簡體   English   中英

從字符串中提取日期時間

[英]Extract DateTime from string

當循環遍歷 List <string>元素時,我想提取第一個日期時間

這是一個示例行,在這種情況下,月份是一位數,月份也可以是兩位數,例如 12,但不能說 01。

string line = "\\\\SomeServer\\HTTP\\demo1\\index.cfm 4 KB CFM " + 
              "File 2/19/2019 3:48:21 PM " + 
              "2/19/2019 1:05:53 PM 2/19/2019 1:05:53 PM 5";

預期的結果是

2/19/2019 下午 3:48:21

我在這里查看了各種正則表達式代碼示例,以下是僅正確處理個位數月份並且不返回日期的時間部分的示例(因為我不知道要使用什么模式)。

var line = "\\\\SomeServer\\HTTP\\FolderName\\index.cfm 4 KB CFM " +
           "File 02/19/2019 3:48:21 PM " +
           "2/19/2019 1:05:53 PM 2/19/2019 1:05:53 PM 5";

var match = Regex.Match(line, 
    @"\d{2}\/\d{2}\/\d{4}");

var dateValue = match.Value;
if (!string.IsNullOrWhiteSpace(dateValue))
{

    var dateTime = DateTime.ParseExact(dateValue, 
        "MM/dd/yyyy", 
        CultureInfo.CurrentCulture);

    Console.WriteLine(
        dateTime.ToString(CultureInfo.InvariantCulture));
}

最后,我在發布這個問題時查看了推薦的問題,並且幾乎沒有創建正則表達式的專業知識。 我感謝任何建議和/或代碼示例讓我朝着正確的方向前進。

您可以使用

\b\d{1,2}/\d{1,2}/\d{4}\s\d{1,2}:\d{2}:\d{2}\s?[AP]M\b

請參閱正則表達式演示 Regex.Match將為您提供第一場比賽。

細節

  • \\b - 詞邊界
  • \\d{1,2}/\\d{1,2}/\\d{4} - 一位或兩位數字, / ,一位或兩位數字, / ,四位數字
  • \\s - 一個空格
  • \\d{1,2}:\\d{2}:\\d{2} - 1 或 2 位數字, : , 2 位數字, : , 2 位數字
  • \\s? - 一個可選的空格
  • [AP]M - AMPM
  • \\b - 字邊界。

暫無
暫無

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

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