遇到了格式化的问题。
if (!DateTime.TryParseExact(dateString, "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateOn))
{
return false;
}
else if (!DateTime.TryParseExact(timeString, "hh:mm tt", CultureInfo.InvariantCulture, DateTimeStyles.None, out timeOn))
{
return false;
}
return SaveWorkshop(id, name, dateOn, timeOn, capacity, description, duration, isCancelled);
使用Bootstrap Datetimepicker,它确实从格式
的文本框中获取字符串dateString = 11/28/2015 and timeString = 6:46 AM
但是在结果中我确实有假并且正在解析默认日期。可能是什么问题?
答案 0 :(得分:9)
对于timeString
,您需要使用h
代替hh
说明符。
06
这样的单个数字, hh
specifier需要leading zero。您需要改为使用h
specifier。
这就是为什么您的第二个DateTime.TryParseExact
返回false
和timeOn
将成为默认值。
答案 1 :(得分:2)
如果我没弄错的话," hh"需要一个两位数的小时,你没有。使用" h"对于非零填充值。
答案 2 :(得分:0)
此外,您解析时间今天在午夜返回的日期将TimeSpan从解析timeString
中添加。
因此,为了切断今天的约会,做一下这样的事情:
// snip ..
DateTime datetimeOn = dateOn.Add(timeOn.TimeOfDay);
return SaveWorkshop(id, name, datetimeOn, capacity, description, duration, isCancelled);
或者,当然,修改SaveWorkshop
以在内部创建datetimeOn
。
修改强>
另外,你可以一次解析:
DateTime datetimeOn;
DateTime.TryParseExact(dateString + timeString, "MM/dd/yyyyh:mm tt", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out datetimeOn);