日期时间FormatException未被用户代码处理

时间:2015-08-19 12:40:43

标签: c# datetime formatexception

这是我想要做的C#网络服务。

arg1是一个下拉菜单,用户可以从中选择“每月每月季度”。 arg2是他们输入的日期。 arg3是他们选择的日期加上添加到日期的一年,一月或三个月。

到目前为止,我把它放在一起:

public ServiceResult CallService(string arg1, string arg2 = "", string arg3 = "")
{
     System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");

     //Write Your Code Here
     if (arg1 == "1 - Annually")
     {

         DateTime thisDate1 = Convert.ToDateTime(arg2);
         thisDate1.AddYears(1);
         arg3 = Convert.ToString(thisDate1);

     }

     return new EchoInputHandler().EchoInput(arg1, arg2, arg3);
}

我收到了错误消息:

FormatException was unhandled by user Code
An Exception of type 'System.FormatException' occurred in mscor.lib but was not handled in user code
Additional information: String was not recognized as a valid DateTime.

有人可以告诉我为什么会这样吗?

解决

我已经解决了!这就是我现在的代码:

public ServiceResult CallService(string arg1, string arg2 = "", string arg3 = "")

    {
        if (arg1 == "1 - Annually")
        {
            DateTime arg2Date = Convert.ToDateTime(arg2);
            arg2Date = arg2Date.AddYears(1);
            arg3 = arg2Date.ToString("dd/MM/yyyy");
        }
     }

2 个答案:

答案 0 :(得分:1)

基本上它告诉你Arg2无法被识别为有效的DateTime。

我会做一些改进:

1)确保你不要在空字符串上调用Convert.ToDateTime(改为使用.Parse,基本上这就是Convert.ToDateTime在内部使用的内容)

2)确保验证arg2 - 您应该知道输入格式。

3)如果你知道输入格式。使用ParseExact

4)确保使用.parse og .ParseExact和try / catch处理,并在catch异常上返回对客户端有用的东西

答案 1 :(得分:0)

尝试使用DateTime.ParseExact并应用您尝试使用的日期格式。