1

私が書いているプログラムに少し問題があります。このプログラムは、リモートの ftp サイトでファイルの作成日をチェックし、それが今日の日付と一致する場合、ファイルをダウンロードして別の ftp サイトにアップロードします。プログラムを実行すると、次のエラーが表示されます。

未処理の例外 system.formatexception 文字列が有効な日時として認識されませんでした

これは、ftpファイルの作成日を日時に変換するために使用しているコードです

/* Get the Date/Time a File was Created */
string fileDateTime = DownloadftpClient.getFileCreatedDateTime("test.txt");
Console.WriteLine(fileDateTime);
DateTime dateFromString = DateTime.Parse(fileDateTime, System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat);
Console.WriteLine(dateFromString);

ここで私が間違っていることについてのアイデアはありますか?

4

1 に答える 1

3

サーバーから返された文字列が の場合、20121128194042コードは次のようにする必要があります。

DateTime dateFromString = DateTime.ParseExact(fileDateTime, 
   "yyyyMMddHHmmss", // Specify the exact date/time format received
   System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat);

編集

getFileCreatedDateTimeメソッドの正しいコードは次のとおりです。

public DateTime getFileCreatedDateTime(string fileName)
{
    try
    {
        ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + fileName);
        ftpRequest.Credentials = new NetworkCredential(user, pass);

        ftpRequest.UseBinary = true;
        ftpRequest.UsePassive = true;
        ftpRequest.KeepAlive = true;

        ftpRequest.Method = WebRequestMethods.Ftp.GetDateTimestamp;
        ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();

        return ftpResponse.LastModified;
    }
    catch (Exception ex) 
    {
        // Don't like doing this, but I'll leave it here
        // to maintain compatability with the existing code:
        Console.WriteLine(ex.ToString());
    }

    return DateTime.MinValue;
}

(この回答の助けを借りて。)

呼び出しコードは次のようになります。

DateTime lastModified = DownloadftpClient.getFileCreatedDateTime("test.txt");
于 2012-11-29T15:44:04.397 に答える