【问题标题】:Calculate period expires date in second or minutes or hours or days [duplicate]以秒或分钟或小时或天计算期限到期日期[重复]
【发布时间】:2019-10-24 02:27:21
【问题描述】:

我想创建一个方法,它返回字符串和(计算期限到期天数)到期日期和当前日期之间的差异。

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

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

  • 如果差异小于 24(一天)小时,我将在小时内返回,例如:7 小时

  • 默认如果不匹配任何情况,我将返回天数,例如:3 天

我已经尝试过的是

(item.EndDate- DateTime.Today).Days

但是当差值小于 24 小时时不起作用,它会返回 0。

你能给我建议吗?

【问题讨论】:

  • 您好,欢迎来到 SO。请使用编辑 lint 在问题中包含您尝试过的代码

标签: c# datetime


【解决方案1】:

回答原来的问题

当差值小于 24 小时时它会返回 0 你能给我建议吗?

你可以使用TotalDays;

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

【讨论】:

    【解决方案2】:

    您应该从最大值开始检查您的到期时间(在您的问题中是一天)。首先写下你的方法:

    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);
    

    【讨论】:

      【解决方案3】:
      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;
      

      -

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-20
        • 2021-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多