如何检查日期格式是否正确,即yyyy-mm-dd
本文关键字:是否 yyyy-mm-dd 格式 日期 何检查 检查 | 更新日期: 2023-09-27 18:22:34
我正在接收来自服务调用的数据,并希望确保字符串的日期格式正确,如:
2015-Nov-19
我尝试使用格式为yyyy-mmm-dd
的解析函数,但它也允许使用类似2015-11-19
的日期。我该怎么办?
对于类似InvariantCulture
的基于英语的文化,您需要使用MMM
说明符而不是mmm
。没有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
}
我在第二种格式中使用了MM
说明符,但如果您的个位数月份没有前导零,则需要使用M
说明符。
使用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
}
使用DateTime.TryParseExact
并适当指定所需的格式字符串。
您可以使用正则表达式。对于日期,如果你想计算任何一个月允许的天数和闰年的天数,可能会很麻烦。也许两步走的方法会更容易。
- 使用正则表达式检查格式是否正确
- 通过将数据强制转换为日期并捕获任何异常来检查数据是否正确
将日期转换为首选格式的另一种非常简单的方法:
DateTime dt = DateTime.Now;
Console.WriteLine(dt.ToString("yyyy-MMM-dd HH:SS"));
你可以在字符串中放入你想要的任何格式。并且要转换为字符串的对象必须是DateTime对象。您可以稍后将字符串重新转换为DateTime。
使用这段代码:
string stringdate = "2015-Nov-19";
DateTime date = Convert.ToDateTime(stringdate);
string tempdate = date.ToString("yyyy-MMM-dd");
if (tempdate == stringdate)
{
// Successfully parsed string goes here
}
它从字符串中检查日期是否为特定格式,如果是特定格式,则会成功解析,否则不会。它不会解析你想要的2015-11-19这样的日期。