我想在我的網路應用程式上有一個類似于“計時器”的東西來結束我的作業訂單。如果我添加新作業,一切看起來都不錯,例如:DateOfWorkCompletion 是明天,那么作業串列會顯示“@TimeToEnd 天的offer 結束”,但是如果明天來了,我重繪 頁面,文本仍然相同。為什么?我該怎么辦?
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>
}
uj5u.com熱心網友回復:
如果work.DateOfWorkCompletion是在未來,那么這樣做DateTime.Today - work.DateOfWorkCompletion將導致一個負值.. 然后你會混淆在負時間跨度中對天進行 ToStringing 會導致一個正值
拋棄所有這些來來回回string:一個日期減去另一個日期會產生一個時間跨度,并且時間跨度具有您可以檢查的屬性,這些屬性可以顯示兩個日期之間的時間段長度的資訊。
就個人而言,我也建議使用定時日期時間,例如,如果優惠在明天下午 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");
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/367565.html
