我有两种日期格式:11-Apr-2018
和11-04-2018
。
对于11-04-2018
,我将"dd-MM-yyyy"
与DateTime.TryParseExact一起使用成功。
对于11-Apr-2018
,我使用"dd-MMM-yyyy"
,但结果是01/01/2018
。
我应该尝试针对哪种格式解析日期值11-Apr-2018
?
这是我的代码:
CultureInfo enZA = new CultureInfo("en-ZA");
var formatStrings = new string[] { "yyyy-MM-dd", "dd-MMM-yyyy" };
DateTime formattedDate;
DateTime.TryParseExact(dateToFormat,
formatStrings,
enZA,
DateTimeStyles.None,
out formattedDate);
答案 0 :(得分:4)
我建议DateTime.ParseExact,您可以在其中指定几种格式:
DateTime date = DateTime.ParseExact(
valueToParse,
new string[] {
"d-MM-yyyy", // try this first
"d-MMM-yyyy" }, // on failure try this next
CultureInfo.GetCultureInfo("en-US"),
DateTimeStyles.AssumeLocal);
例如
string[] tests = new string[] {
"11-04-2018",
"11-Apr-2018",
};
var result = tests
.Select(test => DateTime
.ParseExact(test,
new string[] { "d-MM-yyyy", "d-MMM-yyyy" },
CultureInfo.GetCultureInfo("en-US"),
DateTimeStyles.AssumeLocal))
.Select(date => date.ToString("dd : MM : yyyy"));
Console.Write(string.Join(Environment.NewLine, result));
结果:
11 : 04 : 2018
11 : 04 : 2018
答案 1 :(得分:0)
DateTime myDate = DateTime.ParseExact("11-04-2018", "dd-mmm-yyyy",System.Globalization.CultureInfo.InvariantCulture);
Console.WriteLine(myDate.ToShortDateString());
答案 2 :(得分:0)
dd-MMM-yyyy
应该是正确的
var foo = DateTime.Now;
foo.ToString("dd-MMM-yyyy");
为我工作,我使用的tostring可能与TryParseExact的行为有所不同?