0

格式 YYYYMMDD 未被接受,并引发我尝试使用的异常

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

只有我需要使用日期变量吗?以及如何处理日期格式 yyyymmdd?

4

4 回答 4

1

您可以定义您喜欢的任何格式 - 此外,您可以获得给定文化的默认值列表。

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
于 2013-08-09T19:34:34.833 回答
0

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

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

's 是大写的M,因为这意味着月份,而m意味着分钟。

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

于 2013-08-09T19:33:41.973 回答
0
string Year = 
DateTime.ParseExact(UseDate, "yyyyMMdd", CultureInfo.InvariantCulture).Year.ToString();

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

于 2013-08-09T19:33:49.300 回答
0

我已经对此进行了测试,并且效果很好

DateTime temp;
if (DateTime.TryParseExact("20130101", "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out temp))
{
     string year = temp.Year.ToString();
}
于 2013-08-09T19:42:18.990 回答