计算期限以秒或分钟或小时或天为单位的到期日期

时间:2019-10-24 02:27:21

标签: c# datetime

我想创建一个方法,该方法返回字符串,并(计算期满天数)过期日期与当前日期之间的差异。

  • 如果差异少于1分钟,我将在第二秒返回:8秒

  • 如果差异少于1小时,我将在几分钟后返回:28分钟

  • 如果差异少于24(一天)小时,我将在几个小时前返回:7小时

  • 默认值(如果不匹配),我将退回天数:3天

我已经尝试过的是

(item.EndDate- DateTime.Today).Days

但是当差值少于24小时将返回0时,则不起作用。

你能给我建议吗?

3 个答案:

答案 0 :(得分:1)

回答原始问题

  

当差异少于24小时时,它将返回0,您能给我建议吗?

您可以使用TotalDays;

double ds = ((d1-d2).TotalDays;

答案 1 :(得分:0)

您应该从最大价值(您的问题是一天)开始检查到期时间。首先,如下所示编写您的方法:

public static string CalculateExpirationTime(DateTime expiryDate)
{
    var currentDate = DateTime.Now;
    var dateDifference = (expiryDate - currentDate);

    if (dateDifference.Days >= 1)
        return $"{ dateDifference.Days } day(s) remained";
    else if (dateDifference.Hours >= 1)
        return $"{ dateDifference.Hours } hour(s) remained";
    else if (dateDifference.Minutes >= 1)
        return $"{ dateDifference.Minutes } minute(s) remained";
    else if (dateDifference.TotalSeconds >= 1)
        return $"{ dateDifference.Seconds } second(s) remained";

    return "Expired!";
}

然后这样称呼:

string status = CalculateExpirationTime(item.EndDate);

答案 2 :(得分:0)

DateTime biggerDate;  // pretend it has some valid value
DateTime smallDate;  //     ditto

TimeSpan datesDiff = biggerDate - smallDate;  // assume a positive diff.

if (dateDiff.TotalMinutes < 1) {return new TimeSpan(0,0,0,8);} else
if (dateDiff.TotalHours < 1)   {return new TimeSpan(0,0,28);} else
if (dateDiff.TotalDays < 1)    {return new TimeSpan(0,7,0);} else
return new TimeSpan(3,0,0);  

-------------还是? --------------

if (dateDiff.TotalMinutes < 1) {return dateDiff.TotalSeconds;} else
if (dateDiff.TotalHours < 1)   {return dateDiff.TotalMinutes;} else
if (dateDiff.TotalDays < 1)    {return dateDiff.TotalHours} else
return dateDiff.TotalDays;

-