1

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 was not registered as a valid DateTime. at 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

日時値と文字列の間で 2 回変換するのはなぜですか?
クライアント側では、datatime 値を文字列にしてから、その文字列をサーバーに送信します。
サーバー側では、文字列を取得し、日時に変換します。
なぜこれらの変換を行うのですか? 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 に答える