ASP.NET C# 倒计时到报价结束 - Razor 视图
Posted
技术标签:
【中文标题】ASP.NET C# 倒计时到报价结束 - Razor 视图【英文标题】:ASP.NET C# Countdown to end of offer - Razor View 【发布时间】:2022-01-05 03:24:00 【问题描述】:我想在我的网络应用程序上设置一个“计时器”之类的东西来结束我的工作订单。如果我添加新工作,一切看起来都不错,例如: DateOfWorkCompletion 是明天,然后工作列表显示“在@TimeToEnd 日结束报价”,但是如果明天来了,我刷新页面文本仍然是一样的。为什么?我该怎么办?
var TimeToEnd = Math.Floor(decimal.Parse((DateTime.Today - work.DateOfWorkCompletion).Value.ToString("dd")));
<h2>
@html.ActionLink(work.Name, "Details", new work.WorkId , new style = "text-decoration: none; color:black;" )
<span class="timeAlert">
-
@if (TimeToEnd > 1)
<span>end of offer in @TimeToEnd days/span>
else if (TimeToEnd == 0)
<span class="text-danger">the offer ends today</span>
else if (TimeToEnd == 1)
<span class="text-danger">end of offer in @TimeToEnd day</span>
else
<span class="text-danger">offer has expired</span>
【问题讨论】:
您需要将值存储在应用程序变量中,或者需要写入某个文件或数据库中,并在需要获取其值时从所需的源获取 【参考方案1】:如果 work.DateOfWorkCompletion
是在未来,那么执行 DateTime.Today - work.DateOfWorkCompletion
将导致负值。然后您会陷入混乱,即在负时间跨度中 ToStringing 天数会导致正值
用string
抛弃所有来回往复:一个日期减去另一个日期会产生一个 TimeSpan,而 TimeSpan 具有您可以检查的属性,这些属性可以显示有关两个日期之间的时间段长度的信息。
就个人而言,我建议也使用定时日期时间,例如明天下午 6 点优惠结束,今天下午 3 点,距离优惠结束还有 1 天 3 小时:
var tsTilExpiry = someFutureDate - DateTime.Now; //results in a TimeSpan
Console.WriteLine("Offer ends in: " + tsTilExpiry);
Console.WriteLine($"Offer ends in tsTilExpiry.TotalMinutes minutes");
Console.WriteLine($"Offer ends in tsTilExpiry.Days days, tsTilExpiry.Hours hours");
if(tsTilExpiry.TotalDays < 1)
Console.WriteLine("Hurry! Offer finishes in less than a day");
【讨论】:
以上是关于ASP.NET C# 倒计时到报价结束 - Razor 视图的主要内容,如果未能解决你的问题,请参考以下文章
使用razor/asp.net mvc3生成静态html页面?
ASP.NET Razor——ASP.NET Razor - C#代码语法