在 C# 中,如何将格式"dd/mm/yyyy"
或格式的字符串解析"dd-mm-yyyy"
为日期时间?我收到一条错误消息,指出我的字符串格式不正确。我需要能够解析所有格式,而不仅仅是其中一种。
问问题
12740 次
4 回答
14
您可以定义您喜欢的任何格式 - 此外,您可以获得给定文化的默认值列表。
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-07-23T15:21:11.823 回答
8
mm
表示分钟,大写MM
表示月份。
除此之外,CultureInfo.InvariantCulture
如果要使用日期分隔符解析字符串,则必须使用它,/
因为这是当前区域性日期分隔符的替换字符:
所以这有效:
DateTime.ParseExact("23/07/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture);
请参阅:“/”自定义格式说明符
于 2013-07-23T14:36:25.473 回答
5
您需要定义您希望接受的日期格式。没有所有格式这样的东西。一旦你定义了你可以将格式数组传递给DateTime.ParseExact
您的代码可能如下所示:
string[] formats = new string[2] {"dd/MM/yyyy", "dd-MM-yyyy"};
string date = "23-02-2013";
try
{
DateTime result = DateTime.ParseExact(date, formats, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal);
}
catch (FormatException)
{
// your error handling code here
}
于 2013-07-23T15:07:47.737 回答
1
您可以使用DateTime.ParseExact
任何指定格式的方法。
var d = DateTime.ParseExact(token, "dd-MM-yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal);
于 2013-07-23T14:38:02.767 回答