如何检查日期格式是否正确,即yyyy-mmm-dd?

5 c# string datetime

我正在从服务调用接收数据,并希望确保字符串的格式正确,如:

2015-Nov-19
Run Code Online (Sandbox Code Playgroud)

我试图使用格式的解析函数yyyy-mmm-dd,但它也允许日期2015-11-19.我该怎么办?

Son*_*nül 9

您需要使用MMM,而不是mmm英语基础的类似文化InvariantCulture.没有mmm自定义日期和时间说明符.

如果你想解析多种格式,DateTime.TryParseExact具有过载是需要string[]的放慢参数,所以你可以提供多种格式.

string s = "2015-Nov-19"; // or 2015-11-19
DateTime dt;
string[] formats = {"yyyy-MMM-dd", "yyyy-MM-dd"};
if(DateTime.TryParseExact(s, formats, CultureInfo.InvariantCulture,
                          DateTimeStyles.None, out dt))
{
    // Successfully parse
}
Run Code Online (Sandbox Code Playgroud)

MM在第二种格式中使用了说明符,但如果您的单个数字月份没有前导零,则需要使用M说明符.

  • 你第一次感觉好多了.@TimSchmelter注意到OP sasid它接受了像2015-11-19这样的日期,但这与原版是一个**问题**,因为没有`mmm',解析将它视为不透明的文字而没有轴承在生成的日期,因此将"2015-11-19"解析为"2015-01-19"(月份没有获得任何值,因此默认为"1"). (2认同)

Don*_*Don 5

使用 DateTime.TryParseExact

DateTime dt;
string[] formats = { "yyyy-MMM-dd"};
if (!DateTime.TryParseExact(dateValue, formats, 
                System.Globalization.CultureInfo.InvariantCulture,
                DateTimeStyles.None, out dt))
{
    //your condition fail code goes here
    return false;
}
else
{
    //success code
}
Run Code Online (Sandbox Code Playgroud)