如何从这个字符串中获取日期?

发布于 2024-08-07 21:35:57 字数 345 浏览 7 评论 0原文

我有这个字符串:

\tid <[email protected]>; <b>Tue, 6 Oct 2009 15:38:16</b> +0100

并且我想将日期(加粗)提取为更可用的格式,例如 06-10-2009 15:38:16

最好的方法是什么?

I have this string:

\tid <[email protected]>; <b>Tue, 6 Oct 2009 15:38:16</b> +0100

and I want to extract the date (emboldened) to a more usable format, e.g. 06-10-2009 15:38:16

What would be the best way to go about this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

山田美奈子 2024-08-14 21:35:57

正则表达式可能有点矫枉过正。只需在“;”上拆分,Trim(),然后调用 Date.Parse(...)
它甚至会为您处理时区偏移。

using System;

namespace ConsoleImpersonate
{
    class Program
    {
        static void Main(string[] args)
        {

            string str = "\tid [email protected]; Tue, 6 Oct 2009 15:38:16 +0100";
            var trimmed = str.Split(';')[1].Trim();
            var x = DateTime.Parse(trimmed);

        }
    }
}

Regex might be overkill. Just Split on ';', Trim(), and call Date.Parse(...),
It will even handle the Timezone offset for you.

using System;

namespace ConsoleImpersonate
{
    class Program
    {
        static void Main(string[] args)
        {

            string str = "\tid [email protected]; Tue, 6 Oct 2009 15:38:16 +0100";
            var trimmed = str.Split(';')[1].Trim();
            var x = DateTime.Parse(trimmed);

        }
    }
}
身边 2024-08-14 21:35:57

您可以尝试此代码(可能需要调整)

Regex regex = new Regex(
      ";(?<date>.+?)",
    RegexOptions.IgnoreCase
    | RegexOptions.CultureInvariant
    | RegexOptions.IgnorePatternWhitespace
    | RegexOptions.Compiled
    );

var dt=DateTime.Parse(regex.Match(inputString).Groups["date"].Value)

You can try this code (with possible adjustments)

Regex regex = new Regex(
      ";(?<date>.+?)",
    RegexOptions.IgnoreCase
    | RegexOptions.CultureInvariant
    | RegexOptions.IgnorePatternWhitespace
    | RegexOptions.Compiled
    );

var dt=DateTime.Parse(regex.Match(inputString).Groups["date"].Value)
心舞飞扬 2024-08-14 21:35:57

这是匹配格式的正则表达式方法。日期结果按照您指定的格式设置。

string input = @"\tid [email protected]; Tue, 6 Oct 2009 15:38:16 +0100";
// to capture offset too, add "\s+\+\d+" at the end of the pattern below
string pattern = @"[A-Z]+,\s+\d+\s+[A-Z]+\s+\d{4}\s+(?:\d+:){2}\d{2}";
Match match = Regex.Match(input, pattern, RegexOptions.IgnoreCase);

if (match.Success)
{
    string result = match.Value.Dump();
    DateTime parsedDateTime;
    if (DateTime.TryParse(result, out parsedDateTime))
    {
        // successful parse, date is now in parsedDateTime
        Console.WriteLine(parsedDateTime.ToString("dd-MM-yyyy hh:mm:ss"));
    }
    else
    {
        // parse failed, throw exception
    }
}
else
{
    // match not found, do something, throw exception
}

Here's a regex approach to match the format. The date result is formatted as you specified.

string input = @"\tid [email protected]; Tue, 6 Oct 2009 15:38:16 +0100";
// to capture offset too, add "\s+\+\d+" at the end of the pattern below
string pattern = @"[A-Z]+,\s+\d+\s+[A-Z]+\s+\d{4}\s+(?:\d+:){2}\d{2}";
Match match = Regex.Match(input, pattern, RegexOptions.IgnoreCase);

if (match.Success)
{
    string result = match.Value.Dump();
    DateTime parsedDateTime;
    if (DateTime.TryParse(result, out parsedDateTime))
    {
        // successful parse, date is now in parsedDateTime
        Console.WriteLine(parsedDateTime.ToString("dd-MM-yyyy hh:mm:ss"));
    }
    else
    {
        // parse failed, throw exception
    }
}
else
{
    // match not found, do something, throw exception
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文