我收到了"格式错误"尝试从QueryString的两个部分一起解析Date(DateTime)和Time(字符串)时出错。
在解决此问题时表示感谢。谢谢!
var EventStartDate = Convert.ToDateTime(Request.QueryString["date"]);
string EventStartTime = Request.QueryString["time"];
DateTime newDateTime =
EventStartDate.Add(TimeSpan.ParseExact(EventStartTime, "H:mm:ss", null));
以下更多细节......
EventStartDate = 3/5/2016 12:00:00 AM
EventStartTime = 8:00:00 PM
Error:
Input string was not in a correct format.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.FormatException: Input string was not in a correct format.
Source Error:
Line 8: string EventStartTime = Request.QueryString["time"];
Line 9:
Line 10: DateTime newDateTime = EventStartDate.Add(TimeSpan.ParseExact(EventStartTime, "hh:mm:ss", null));
答案 0 :(得分:1)
您错过了HH
。请使用HH
代替H
。希望它能奏效。
DateTime newDateTime =
EventStartDate.Add(TimeSpan.ParseExact(EventStartTime, "HH:mm:ss", null));
答案 1 :(得分:0)
请假设您的时间格式为 00:00:00
,请尝试此操作DateTime newDateTime = EventStartDate.Add(TimeSpan.ParseExact(EventStartTime, "hh\\:mm\\:ss", null));
答案 2 :(得分:0)
Convert.ToDateTime
使用CurrentCulture
设置的标准日期和时间格式。看起来3/5/2016 12:00:00 AM
不是其中之一。此外,您的CurrentCulture
可能将AMDesignator
和PMDesignator
属性设为空字符串。
您可以将DateTime.ParseExact
与自定义格式和特定的文化设置(如
var EventStartDate = DateTime.ParseExact(Request.QueryString["date"],
"M/d/yyyy hh:mm:ss tt",
CultureInfo.InvariantCulture);
您说EventStartTime
为8:00:00 PM
并且您尝试将其解析为TimeSpan
但由于TimeSpan
是时间间隔,因此这些指示符 no < / em>与它们有关,它们也不作为输入格式支持。
如果你的字符串确实有那些指示符,你需要删除它们,如;
string EventStartTime = Request.QueryString["time"].Replace("AM", "")
.Replace("PM", "").Trim();
然后您可以将其解析为TimeSpan
like;
var StartTime = TimeSpan.Parse(EventStartTime, CultureInfo.InvariantCulture);
最后,将其添加到您的EventStartDate
喜欢;
var newDateTime = EventStartDate.Add(StartTime);