【问题标题】:ftp web response date time formatftp web 响应日期时间格式
【发布时间】:2019-02-20 15:45:31
【问题描述】:

我已经尝试使用 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 网络响应中获取正确的日期时间格式。

TIA。

【问题讨论】:

  • @TheIncorrigible1 一个 FTP 服务器的响应 is 文本
  • @TheIncorrigible1 并非如此。并且 FTP 返回必须被解析的文本列表。这就是 FTP 的工作原理。 FtpWebRequest 也不提供很多 FTP 功能。还有其他 FTP 库,但即使是那些也必须解析结果
  • 无论如何都没有复制。首先,我确实获取所有数据。其次,regex 只会返回它找到的文本。没有文字,没有结果。它不会返回01-01-0001 12:00 AM。看起来一些 other 代码尝试解析时间戳并失败,返回值为 0001 年 1 月 1 日的默认 DateTime 对象
  • 你是如何解析时间戳值的?您使用的是TryParse 还是TryParseExact?您是否检查他们的响应以查看解析是否成功?

标签: c# .net regex ftpwebresponse


【解决方案1】:

没有复制。

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

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!
}

【讨论】:

  • 谢谢,它对我有用。但我只得到“27-Jan-17 6:54:00 AM”。我如何像“2017 年 1 月 27 日上午 6:54:00”一样获得全年。有什么可能吗? TIA
  • @BalajiV 解析字符串并从中获取实际的 DateTime。之后,您可以随意格式化 DateTime
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-28
  • 2012-03-18
  • 2014-04-10
  • 1970-01-01
  • 2016-12-29
  • 2021-12-12
相关资源
最近更新 更多