none
求助:该字符串未被识别为有效的DateTime。 RRS feed

  • 问题

  • 我在Excel中有一字符串格式为:2012-3-1 8:59:28,读取的格式为: string wTime = DateTime.Parse(newTable.Rows[0]["日期时间"].ToString()).DayOfWeek.ToString();//获取星期

    使用MessageBox.Show()时正常显示,但是用到程序中时老是提示该字符串未被识别为有效的DateTime 。

    我读取到的Excel先保存在datatable中。

    这到底是怎么回事呢?

    2012年4月23日 6:35

答案

  • 您好,

    或许有些值并不是yyyy-MM-dd HH:mm:ss格式,所以您能使用 DateTime.TryParseExact 方法DateTime.TryParse 方法来试着转看看!

    string dateString;
    DateTime dateValue;
    string dateFormat = "yyyy-M-d H:mm:ss";
    // Parse date with no style flags.
    dateString = "2012-3-1 8:59:28";
    if (DateTime.TryParseExact(dateString, dateFormat, null,
    						   System.Globalization.DateTimeStyles.None, out dateValue))
    	MessageBox.Show(string.Format("Converted '{0}' to {1} ({2}).", dateString, dateValue,
    					  dateValue.Kind));
    else
    	MessageBox.Show(string.Format("'{0}' is not in an acceptable format.", dateString));
    
    dateString = "2012-10-11 8:59:28";
    if (DateTime.TryParseExact(dateString, dateFormat, null,
    						   System.Globalization.DateTimeStyles.None, out dateValue))
    	MessageBox.Show(string.Format("Converted '{0}' to {1} ({2}).", dateString, dateValue,
    					  dateValue.Kind));
    else
    	MessageBox.Show(string.Format("'{0}' is not in an acceptable format.", dateString));
    
    dateString = "2012-10-11 14:59:28";
    if (DateTime.TryParseExact(dateString, dateFormat, null,
    						   System.Globalization.DateTimeStyles.None, out dateValue))
    	MessageBox.Show(string.Format("Converted '{0}' to {1} ({2}).", dateString, dateValue,
    					  dateValue.Kind));
    else
    	MessageBox.Show(string.Format("'{0}' is not in an acceptable format.", dateString));


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已标记为答案 蒙田 2012年4月23日 9:10
    2012年4月23日 7:36
  • 您好,

    我从excel获取到的日期是字符串,格式是"yyyy-M-d H:mm:ss";,我转换成DateTime.Parse进行转换时就出现了该字符串未被识别为有效的DateTime。那么Datetime的格式是yyyy-MM-dd HH:mm:ss吗?我应该如何进行转换才有效呢?麻烦指点!

    既然你已经成功把Excel的日期字符串转化成形如“yyyy-M-d H:mm:ss”的样式,其实本质上它已经是一个DateTime了。DateTime格式不一定是yyyy-MM-dd HH:mm:ss的。

    当然,你一定要这样的话也可以——把转化好的DateTime再次使用ToString("yyyy-MM-dd HH:mm:ss")即可。


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    • 已标记为答案 蒙田 2012年4月24日 1:42
    2012年4月24日 1:18
    版主

全部回复

  • 程序中哪句话出错?可以指出吗?

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年4月23日 6:54
    版主
  • 您好,

    或许有些值并不是yyyy-MM-dd HH:mm:ss格式,所以您能使用 DateTime.TryParseExact 方法DateTime.TryParse 方法来试着转看看!

    string dateString;
    DateTime dateValue;
    string dateFormat = "yyyy-M-d H:mm:ss";
    // Parse date with no style flags.
    dateString = "2012-3-1 8:59:28";
    if (DateTime.TryParseExact(dateString, dateFormat, null,
    						   System.Globalization.DateTimeStyles.None, out dateValue))
    	MessageBox.Show(string.Format("Converted '{0}' to {1} ({2}).", dateString, dateValue,
    					  dateValue.Kind));
    else
    	MessageBox.Show(string.Format("'{0}' is not in an acceptable format.", dateString));
    
    dateString = "2012-10-11 8:59:28";
    if (DateTime.TryParseExact(dateString, dateFormat, null,
    						   System.Globalization.DateTimeStyles.None, out dateValue))
    	MessageBox.Show(string.Format("Converted '{0}' to {1} ({2}).", dateString, dateValue,
    					  dateValue.Kind));
    else
    	MessageBox.Show(string.Format("'{0}' is not in an acceptable format.", dateString));
    
    dateString = "2012-10-11 14:59:28";
    if (DateTime.TryParseExact(dateString, dateFormat, null,
    						   System.Globalization.DateTimeStyles.None, out dateValue))
    	MessageBox.Show(string.Format("Converted '{0}' to {1} ({2}).", dateString, dateValue,
    					  dateValue.Kind));
    else
    	MessageBox.Show(string.Format("'{0}' is not in an acceptable format.", dateString));


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已标记为答案 蒙田 2012年4月23日 9:10
    2012年4月23日 7:36
  • 您好,

    或许有些值并不是yyyy-MM-dd HH:mm:ss格式,所以您能使用 DateTime.TryParseExact 方法DateTime.TryParse 方法来试着转看看!

    string dateString;
    DateTime dateValue;
    string dateFormat = "yyyy-M-d H:mm:ss";
    // Parse date with no style flags.
    dateString = "2012-3-1 8:59:28";
    if (DateTime.TryParseExact(dateString, dateFormat, null,
    						   System.Globalization.DateTimeStyles.None, out dateValue))
    	MessageBox.Show(string.Format("Converted '{0}' to {1} ({2}).", dateString, dateValue,
    					  dateValue.Kind));
    else
    	MessageBox.Show(string.Format("'{0}' is not in an acceptable format.", dateString));
    
    dateString = "2012-10-11 8:59:28";
    if (DateTime.TryParseExact(dateString, dateFormat, null,
    						   System.Globalization.DateTimeStyles.None, out dateValue))
    	MessageBox.Show(string.Format("Converted '{0}' to {1} ({2}).", dateString, dateValue,
    					  dateValue.Kind));
    else
    	MessageBox.Show(string.Format("'{0}' is not in an acceptable format.", dateString));
    
    dateString = "2012-10-11 14:59:28";
    if (DateTime.TryParseExact(dateString, dateFormat, null,
    						   System.Globalization.DateTimeStyles.None, out dateValue))
    	MessageBox.Show(string.Format("Converted '{0}' to {1} ({2}).", dateString, dateValue,
    					  dateValue.Kind));
    else
    	MessageBox.Show(string.Format("'{0}' is not in an acceptable format.", dateString));


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/


    感谢你的回答,我用的string dateFormat = "yyyy-M-d H:mm:ss",这个格式转化成功,请问这属于哪个区域的格式?
    2012年4月23日 9:11
  • 您好,

    您可以參考:自定义日期和时间格式字符串

    “H”:采用 24 小时制的小时(从 0 到 23)。

    “M”: 月份(1 到 12)。


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年4月23日 9:49
  • 您好,

    您可以參考:自定义日期和时间格式字符串

    “H”:采用 24 小时制的小时(从 0 到 23)。

    “M”: 月份(1 到 12)。


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    谢谢,帮忙帮到底吧。

    我从excel获取到的日期是字符串,格式是"yyyy-M-d H:mm:ss";,我转换成DateTime.Parse进行转换时就出现了该字符串未被识别为有效的DateTime。那么Datetime的格式是yyyy-MM-dd HH:mm:ss吗?我应该如何进行转换才有效呢?麻烦指点!

    2012年4月24日 1:08
  • 您好,

    我从excel获取到的日期是字符串,格式是"yyyy-M-d H:mm:ss";,我转换成DateTime.Parse进行转换时就出现了该字符串未被识别为有效的DateTime。那么Datetime的格式是yyyy-MM-dd HH:mm:ss吗?我应该如何进行转换才有效呢?麻烦指点!

    既然你已经成功把Excel的日期字符串转化成形如“yyyy-M-d H:mm:ss”的样式,其实本质上它已经是一个DateTime了。DateTime格式不一定是yyyy-MM-dd HH:mm:ss的。

    当然,你一定要这样的话也可以——把转化好的DateTime再次使用ToString("yyyy-MM-dd HH:mm:ss")即可。


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    • 已标记为答案 蒙田 2012年4月24日 1:42
    2012年4月24日 1:18
    版主
  • 感谢你的帮忙,我搞定了。太感谢啦
    2012年4月24日 1:42
  • 感谢你的帮忙,我搞定了。太感谢啦
    不用谢!欢迎来到MSDN交流技术、分享知识!

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年4月24日 1:43
    版主