我的代码将异常作为无效的日期时间抛出。我将其发布到我的服务器后发生错误。在我的开发PC上找工作
string str = "27-07-2015 6:15 pm";
DateTime dt = Convert.ToDateTime(DateTime.ParseExact(str, "dd-MM-yyyy h:mm tt", null).ToString("dd-MM-yyyy hh:mm tt"));
月份为“27”,白天为“7”。
我做了什么来解决问题:
答案 0 :(得分:6)
正如@Rawling正确指出的那样,你要解析日期时间两次:首先,使用自定义格式,然后使用系统的默认格式。
这很愚蠢 - 您已经拥有DateTime
方法中的ParseExact
:
string str = "27-07-2015 6:15 pm";
var dt = DateTime.ParseExact(str, "dd-MM-yyyy h:mm tt", null);
就是这样,你已经完成了。无需再次转换为字符串,并再次解析(更糟糕的是,使用相同的自定义格式来执行ToString
,因此后续的Convert.ToDateTime
绑定到在任何不是默认日期时间格式的地方失败。
答案 1 :(得分:1)
有几种可能性;
让我们先分析您的DateTime.ParseExact(str, "dd-MM-yyyy h:mm tt", null)
部分。这将成功解析您的27-07-2015 6:15 pm
字符串如果;
CurrentCulture
TimeSeparator
为:
且CurrentCulture
PMDesignator
为PM
(非空字符串)如果两者都是okey,则表示您已成功解析DateTime
。
之后,您将使用dd-MM-yyyy hh:mm tt
格式生成文本表示。这仍然取决于您的CurrentCulture
,您的结果可能有PM
。对于这两种情况,都无法保证使用Convert.ToDateTime
方法解析您的字符串,因为只有 >>它是CurrentCulture
string str = "27-07-2015 6:15 pm";
DateTime dt = DateTime.ParseExact(str, "dd-MM-yyyy h:mm tt", CultureInfo.InvariantCulture);
的{{3}}才会解析您的字符串
另一方面,你所做的事对我没有意义。首先解析字符串,然后生成字符串表示,然后再尝试解析此字符串 。没有意义,对吧?
我强烈怀疑你只需要;
.nav-tabs li {display: none;}
.nav-tabs li.active {display: list-item} /* or block, if LIs are floated or you want them block */