【问题标题】:No year being returned using ListDirectoryDetails C#没有使用 ListDirectoryDe​​tails C# 返回年份
【发布时间】:2013-10-03 09:32:56
【问题描述】:

我想知道是否有人可以提供帮助。我正在使用 WebRequestMethods.Ftp.ListDirectoryDe​​tails,通过 FTP 连接列出目录详细信息。但是我注意到没有返回年份,所以我得到了诸如

之类的结果

-rw------ 1 1003 1003 79947 Oct 02 10:27 D9694396.D239265890.DWA2540.Z

我真的需要年份,这样我才能完全解析日期。这是一个基于 Unix 的服务器,我无法配置。我也不想使用 3rd 方库,因为这只是一个简单的目录列表。我也不想使用 GetDateTimestamp,因为我们正在查看 1000 个文件。

任何帮助将不胜感激!

【问题讨论】:

  • 我同意类似的观点。但是,除了使用我不想这样做的 3rd 方包之外,该问题没有提供任何合适的答案!
  • @VinceAshby-Smith,您可能想在您的帖子中解释这一点,以便其他人可以理解...
  • 在该问题及其 cmets 和答案中解释说,每个 FTP 服务器软件都可能以不同的格式返回列表。您必须配置服务器以返回日期。然后你可以决定要么自己解析它,要么使用(免费)库。如果无法配置服务器,则无法获取年份。您也许也可以在每个文件上调用GetDateTimestamp (MDTM)
  • @Codecaster Unix 如果日期少于一年前,则不会返回年份。无需配置 - 只需改进客户端解析器。

标签: c# .net c#-4.0 ftp


【解决方案1】:

我发现 Unix 不会给出年份,除非文件来自上一年,而对于当前年份它给出时间。所以解决这个问题,我使用了以下代码:

if (unParsedCreateTime.Contains(":"))
{
    var x = Convert.ToDateTime(DateTime.Now.Year.ToString(CultureInfo.InvariantCulture) + " " + unParsedCreateTime);
}
else
{
    var x = Convert.ToDateTime(unParsedCreateTime);    
}

【讨论】:

  • 如果文件不到一年(不是“上一年”或“今年”),Unix 通常不返回年份。请注意,当文件小于 183 天时,MacOS 会返回没有年份的列表(这对于具有未来日期的文件很重要 - 它们在 Unix 和 Mac 中的列出方式不同)。
猜你喜欢
  • 1970-01-01
  • 2016-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-21
  • 1970-01-01
相关资源
最近更新 更多