0

我尝试使用 Ftp Web Response 来使用 ASP.Net 访问 c# 中的文件和目录详细信息。

System.Net.WebRequestMethods.Ftp.ListDirectoryDetails

我从 FTP 服务器得到如下响应:

01-27-17  06:54AM                14613 A J DOHMANN CHRYSLER INC.csv
09-20-18  12:27PM            122816576 ABC1Append.csv
09-12-18  08:45AM             54998269 ABC1_FileForAppend.csv

当我尝试使用以下正则表达式格式化日期时间时,我得到的结果为“01-01-0001 12:00 AM”

正则表达式:

(?<timestamp>\\d{2}\\-\\d{2}\\-\\d{2}\\s+\\d{2}:\\d{2}[Aa|Pp][mM])\\s+(?<dir>\\<\\w+\\>){0,1}(?<size>\\d+){0,1}\\s+(?<name>.+)

请对此提供一些帮助,如何从 FTP Web 响应中获取正确的日期时间格式。

TIA。

4

1 回答 1

0

没有复制。

该正则表达式确实捕获了时间戳。以下代码:

var input=@"01-27-17  06:54AM                14613 A J DOHMANN CHRYSLER INC.csv
09-20-18  12:27PM            122816576 ABC1Append.csv
09-12-18  08:45AM             54998269 ABC1_FileForAppend.csv";

var pattern="(?<timestamp>\\d{2}\\-\\d{2}\\-\\d{2}\\s+\\d{2}:\\d{2}[Aa|Pp][mM])\\s+(?<dir>\\<\\w+\\>){0,1}(?<size>\\d+){0,1}\\s+(?<name>.+)";
var rex=new Regex(pattern);
var ts=rex.Match(input).Groups["timestamp"].Value;

退货

01-27-17  06:54AM

我怀疑其他一些代码试图解析这个字符串,失败并返回一个默认的 DateTime 值。

这个字符串可以被解析,例如:

DateTime.Parse(ts,CultureInfo.GetCultureInfo("en-US"));

或者

if(DateTime.TryParse(ts,CultureInfo.GetCultureInfo("en-US"),DateTimeStyles.None,out var dt))
{
    Console.WriteLine(dt);
}
else
{
    //Parsing failed!
}
于 2019-02-20T16:03:05.543 回答