我正在使用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)”服务器端的此错误。怎么解决这个?请帮忙。
答案 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);