我有一个用于演示目的的功能:
public static bool doSomething (int year, int month, int date, int hour, int minute, int second)
{
string dateFormat = "M/d/yyyy hh:mm:ss";
string hourstring = hour < 10 ? string.Format("{0}0", hour) : hour.ToString();
string minuteString = minute < 10 ? string.Format("0{0}", minute) : minute.ToString();
string secondString = second < 10 ? string.Format("0{0}", second) : second.ToString();
var dateString = string.Format("{0}/{1}/{2} {3}:{4}:{5}", month, date, year, hourString, minuteString, secondString);
DateTime testDate = new DateTime();
bool test = DateTime.TryParseExact(dateString, dateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out testDate);
return test;
}
我已尝试将我的功能称为doSomething(2016, 1, 1, 15, 0, 0)
所以我试图让我的函数在解析日期2016年1月1日下午3:00:00时返回true。 但它总是返回错误。
我的dateFormat字符串不正确吗?如何让TryParseExact将15小时解释为下午3点?
由于
答案 0 :(得分:2)
您使用的是小写hh
格式为12小时,并且您传递的15
为24小时格式。
以您的格式使用HH
(大写)。
string dateFormat = "M/d/yyyy HH:mm:ss";
有关详情,请参阅:Custom Date and Time Format Strings