1

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

此代码在我的客户端中将日期时间值转换为字符串。

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

这是服务器中用于从字符串中取回日期时间值的代码

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)”这个错误。如何解决这个问题?请提供任何帮助。

4

3 回答 3

2

您的 ParseExact() 格式看起来 dd/MM/yyy HH:MM应该是dd/MM/yyyy HH:MM.

于 2012-06-14T06:43:58.697 回答
0

尝试这个,

long longVar = BitConverter.ToInt64(bb.ReadBytes(len));
DateTime dateTimeVar = new DateTime(1980,1,1).AddMilliseconds(longVar);
于 2012-06-14T06:23:59.020 回答
0

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

        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);
于 2012-06-14T06:16:55.423 回答