我需要接受来自输入文件,它可以是C#中的任何格式.我需要检查格式并提取年份

本文关键字:格式 任何 检查 取年份 提取 输入 文件 | 更新日期: 2023-09-27 18:27:09

YYYYMMDD格式未被接受,正在引发异常我试过使用

string Year = DateTime.ParseExact(UseDate, "YYYYMMDD",
              CultureInfo.InvariantCulture).Year.ToString();

只需要我使用日期变量吗?日期格式yyyymmdd是如何处理的?

我需要接受来自输入文件,它可以是C#中的任何格式.我需要检查格式并提取年份

您可以定义任何您喜欢的格式,还可以获得给定区域性的默认值列表。

var ci = new CultureInfo("en-US");
var formats = new[] { "M-d-yyyy", "dd-MM-yyyy", "MM-dd-yyyy", "M.d.yyyy", "dd.MM.yyyy", "MM.dd.yyyy" }
        .Union(ci.DateTimeFormat.GetAllDateTimePatterns()).ToArray();
DateTime.ParseExact("07/23/2013", formats, ci, DateTimeStyles.AssumeLocal).Dump();
DateTime.ParseExact("07-23-2013", formats, ci, DateTimeStyles.AssumeLocal).Dump();
DateTime.ParseExact("23-07-2013", formats, ci, DateTimeStyles.AssumeLocal).Dump();
DateTime.ParseExact("23.07.2013", formats, ci, DateTimeStyles.AssumeLocal).Dump();

输出:

7/23/2013 12:00:00 AM
7/23/2013 12:00:00 AM
7/23/2013 12:00:00 AM
7/23/2013 12:00:00 AM

我已经测试过了,运行良好

DateTime temp;
if (DateTime.TryParseExact("20130101", "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out temp))
{
     string year = temp.Year.ToString();
}

DateTime.ParseExact的格式字符串区分大小写。

string year =  DateTime.ParseExact(UseDate, "yyyyMMdd", CultureInfo.InvariantCulture).Year.ToString();

M是大写的,因为它表示月份,而m表示分钟。

自定义日期和时间格式字符串

string Year = 
DateTime.ParseExact(UseDate, "yyyyMMdd", CultureInfo.InvariantCulture).Year.ToString();

y年和d日必须小写,M月必须大写