从未知日期格式获取年份



我正在从musicbrainz服务器中提取数据,日期以随机格式返回,它要么为空,要么为null,只包括年份,要么具有以下格式:

01-01-2022 
2022-01-01
01//01/2022
2022

我试过

DateTime.Parse(date).Year;

它给了我一个错误的字符串,只返回一年。

我不建议使用DateTime解析,因为其中一些格式并不完整。但是,如果您真的想要,您可以使用ParseExact并传入多种格式的字符串。例如:

var formats = new [] 
{
"dd-MM-yyyy", // Assuming this is correct based on your example
"yyyy-MM-dd",
"dd//MM/yyyy",
"yyyy"
};
var parsedDateTime = DateTime.ParseExact(date, formats, CultureInfo.InvariantCulture);
var year = parsedDateTime.Year;

或者,您可以使用正则表达式搜索4个连续的数字。例如:

var yearString = Regex.Match(date, "\d{4}").Value;
var year = int.Parse(yearString);

请注意,以上都不是健壮的,应该有错误处理等。

最新更新