我已经尝试过使用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。
答案 0 :(得分: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!
}