System.FormatException:String未被识别为有效的DateTime

时间:2012-06-14 06:11:30

标签: c# winforms datetime

我正在使用C#在winforms中进行客户端服务器项目。客户端在特定日期请求文件。客户端在Windows 7 32位系统中运行,服务器在Windows Server 2008 R2中运行。

此代码在我的客户端将datetime值转换为字符串。

string date = dateTimePickerFrom.Value.ToString("dd/MM/yyyy HH:MM", CultureInfo.InvariantCulture);

这是服务器中用于从字符串

返回Datetime值的代码
string dat = Encoding.ASCII.GetString(bb.ReadBytes(len));
FromDate = DateTime.ParseExact(dat, "dd/MM/yyy HH:MM", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);

得到“System.FormatException:String未被识别为有效的DateTime。在System.DateTimeParse.ParseExact(String s,String format,DateTimeFormatInfo dtfi,DateTimeStyles style)”服务器端的此错误。怎么解决这个?请帮忙。

3 个答案:

答案 0 :(得分:2)

您的ParseExact()格式如下所示 dd/MM/yyy HH:MM,应为dd/MM/yyyy HH:MM

答案 1 :(得分:0)

为什么在日期时间值和字符串之间转换两次?
在客户端,将数据时间值转换为字符串,然后将字符串发送到服务器 在服务器端,您获取字符串,并将其转换回日期时间 你为什么要做这些转换? datetime-> string-> datetime,它让人胡说八道。
您应该将datetime直接发送到服务器,并直接获取datetime。我猜你正在使用socket来做到这一点。 不要让字符串打扰你。
代码如下:

        DateTime now = DateTime.Now;
        long l0 = now.ToBinary();
        byte [] array = BitConverter.GetBytes(l0);
        //here you can send it to the server

        //on the server
        byte[] buffer = null;  //receive bytes 
        long l1 = BitConverter.ToInt64(buffer,0);
        DateTime time = DateTime.FromBinary(l1);

答案 2 :(得分:0)

试试这个,

long longVar = BitConverter.ToInt64(bb.ReadBytes(len));
DateTime dateTimeVar = new DateTime(1980,1,1).AddMilliseconds(longVar);