【发布时间】:2021-12-03 16:36:32
【问题描述】:
第一次下载 TimeDate.Now 时例如是 15:57 所以我 RoundDown 使 15:55 格式化并尝试下载它。
如果在已完成的事件中没有成功,我会尝试从 15:55 到 15:50 再次格式化并再次尝试下载。
问题是它没有再次四舍五入。在完成的事件中,如果有错误这一行:
current = RoundDown(current, TimeSpan.FromMinutes(-5));
它仍然是上面四舍五入的 15:55,我希望在下载不成功之前保持向下舍入并尝试下载新的 currentLink 与新的向下舍入。 15:50 不成功 make it 15:45 not success 15:40 依此类推,一遍又一遍地构建 currentLink,直到下载成功。
public void GetImages()
{
defaultlink = "https://IMSRadar/IMSRadar_";
current = RoundDown(DateTime.Now, TimeSpan.FromMinutes(-5));
var ct = current.ToString("yyyyMMddHHmm");
currentLink = defaultlink + ct + ".gif";
using (System.Net.WebClient wc = new System.Net.WebClient())
{
wc.DownloadFileCompleted += Wc_DownloadFileCompleted;
wc.DownloadFileAsync(new Uri(currentLink), @"d:\test.gif");
}
}
private void Wc_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
if (e.Error != null)
{
using (System.Net.WebClient wc = new System.Net.WebClient())
{
current = RoundDown(current, TimeSpan.FromMinutes(-5));
var ct = current.ToString("yyyyMMddHHmm");
currentLink = defaultlink + ct + ".gif";
wc.DownloadFileCompleted += Wc_DownloadFileCompleted;
wc.DownloadFileAsync(new Uri(currentLink), @"d:\test.gif");
}
}
else
{
GenerateRadarLinks();
}
}
方法 RoundDown
DateTime RoundDown(DateTime date, TimeSpan interval)
{
return new DateTime(date.Ticks / interval.Ticks *
interval.Ticks);
}
【问题讨论】:
-
我无法理解您的 RoundDown 方法,或者确实需要多次使用它。你为什么不把你的 dateTime 分钟减五,而不是不断地尝试四舍五入到下一个可被 5 整除的数字(这将失败,因为你的输入在第一次之后已经可以被 5 整除,导致没有变化) ?此外,在这种情况下使用 -5 应该没有什么区别,因为 RoundDown 将区间乘以自身,所以 (-5) * (-5) = +25 无论如何
-
@ShrimpPerator 首先,我每次尝试向下舍入并且不将分钟更改为负 5 的原因是,例如,如果第一次 DateTime.Now 是 13:49,我必须首先将其更改为 13:45,然后我每次可以自己减去 5,但至少第一次我必须将其舍入,因为我需要测试分钟时间的链接必须是 5 或 0,如 14:45 或 13 :30 或 12:20 所以也许我只需要在第一次四舍五入它,然后如果有错误,我自己减去 5 分钟。我会努力做到的。
-
@ShrimpPerator 尝试多次下载的原因是因为我不知道网站上的工作链接是什么我只知道链接的一部分但不知道日期时间部分是什么关联。这就是为什么我要进行测试,直到找到正确的 currentLink 工作链接。
-
@ShrimpPerator 我的代码中的内置链接应该是这样的,例如:Radar_202110151650.gif 但因为我还不知道格式化的日期时间是否正确,所以我想保留每次 5 分钟,直到下载没问题,然后我知道这是正确的链接。因此,例如,如果此链接不起作用,则下一个链接应该是:Radar_202110151645.gif,然后是 Radar_202110151640.gif,依此类推,每分钟 5 分钟。这是我需要做的测试才能找到有效的链接。