当我尝试运行时
DateTime.TryParseExact(employeeHireDate, "mm/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dDate);
C#正在将DateTime转换为2015年5月5日的其他日期,即我即将通过05/05/2015。
任何帮助将不胜感激。
以下是我的代码:
static void Main(string[] args)
{
string employeeHireDate = "05/05/2015";
DateTime dDate;
var isDateValid= DateTime.TryParseExact(employeeHireDate, "m/d/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dDate);
if (!isDateValid)
{
Console.WriteLine("Failed");
Console.ReadLine();
}
else
{
Console.WriteLine("Success");
Console.ReadLine();
}
}
答案 0 :(得分:4)
使用
DateTime.TryParseExact(employeeHireDate, "MM/dd/yyyy",
CultureInfo.InvariantCulture, DateTimeStyles.None, out dDate);
相反,使用资本"MM"
。 mm
是几分钟,MM
是几个月(见documentation)。
答案 1 :(得分:3)
格式字符串中的小写m
为分钟。你想要一个大写M
几个月。五分钟,没有指定月份值,意味着你最终得到一年中的第一个月。你需要这个:
DateTime.TryParseExact(employeeHireDate, "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dDate);
以下是参考资料:
https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings
答案 2 :(得分:1)
当您使用TryParseExact时,它必须是确切的格式。 " 05/05/2015"匹配" MM / dd / yyyy"不是" m / d / yyyy"。
它应该是:
var isDateValid= DateTime.TryParseExact(employeeHireDate, "MM/dd/yyyy",
CultureInfo.InvariantCulture, DateTimeStyles.None, out dDate);
还要注意" mm"适用于Minute
,你应该使用" MM"一个月。