我有简单的一行代码
var startYearString = DateTime.Parse("03/21/2014").Year;
我希望这可行,但它会抛出这样的错误
System.FormatException was unhandled by user code
HResult=-2146233033
Message=String was not recognized as a valid DateTime.
Source=mscorlib
StackTrace:
at System.DateTime.Parse(String s)
at ConnectBLL.usercontrols.users.UserProfile.Page_Load(Object sender, EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
InnerException:
我不知道出了什么问题?
答案 0 :(得分:7)
如果您已经知道日期格式,则需要使用DateTime.ParseExact()
。
试试这个:
var startYearString = DateTime.ParseExact("03/21/2014","MM/dd/yyyy",
CultureInfo.InvariantCulture).Year;
<强>解释强>
yyyy
- 年份,共4位数字
两个数字MM
- 月
dd
- 日期两位数
hh
- 小时两位数
mm
- 分钟两位数
两位数的ss
- 秒。
有关详情,请参阅此处:DateTime custom formats
答案 1 :(得分:2)
尝试
var provider = CultureInfo.InvariantCulture;
var dateString = "03/21/2014";
var format = "d";
var output = DateTime.ParseExact(dateString, format, provider);
答案 2 :(得分:1)
确保您的文化设置为您要解析的类型。
DateTime.Parse("01/23/2014", new CultureInfo("en-US")); // happy
DateTime.Parse("01/23/2014", new CultureInfo("en-GB")); // sad
DateTime.Parse("23/01/2014", new CultureInfo("en-GB")); // happy