匹配日期的正则表达式

Mud*_*san 1 c# regex datetime datetime-format

除了在C#中使用Regex库之外,我对正则表达式一无所知,对于从net搜索的模式匹配表达式也是如此.

我希望有正则表达式来匹配下面两种提到的格式的日期,不需要年份部分.

  1. 8 October 要么 8 Oct

  2. September 19 要么 Sep 19

请帮帮我,搜索谷歌没有帮助我.

Dar*_*rov 6

当框架已经为您提供了TryParseExact旨在完成该操作的方法时,为什么要使用正则表达式?

public class Program
{
    static void Main()
    {
        var str = "8 October";
        DateTime date;
        var formats = new[] { "d MMMM", "d MMM" };
        if (DateTime.TryParseExact(str, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
        {
            Console.WriteLine(date);
        }
        else
        {
            Console.WriteLine("The date was not in one of the 2 supported formats 'd MMMM' orr 'd MMM'");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

你甚至可以让它具有文化意识.例如,假设您的网站的法语用户可能会写8 Octobre而不是8 October.

在这种情况下,您可以指定当前文化或强制特定文化:

var str = "8 Octobre";
DateTime date;
var formats = new[] { "d MMMM", "d MMM" };
var ci = new CultureInfo("fr-FR");
if (DateTime.TryParseExact(str, formats, ci, DateTimeStyles.None, out date))
{
    // use the date instance here
}
Run Code Online (Sandbox Code Playgroud)

进一步阅读:自定义日期时间格式.