Calculate difference between two dates returns a negative number

前端 未结 4 1124
予麋鹿
予麋鹿 2021-01-15 05:12

I am trying to calculate how many days there are between different dates. Like the topic says, I\'m getting a negative value. I guess I could just take the absolute value, b

相关标签:
4条回答
  • 2021-01-15 05:50

    Ofcourse 3-31 gives -28, but since we want it to show days between, it makes no sense that it doesn't return a positive value. Am I doing something wrong?

    I think that you don't know which date is greater before hand.And your naming is just confusing.

    You can first check which date is greater and then subtract the Lesser from the greater

    TimeSpan differenceInDays;
    double xAxisValue;
    if(nextDay > previousDay )
    {
        differenceInDays = (nextDay - previousDay); 
    }
    else
    {
        differenceInDays = (previousDay - nextDay); 
    }
    xAxisValue = differenceInDays.TotalDays;
    
    0 讨论(0)
  • 2021-01-15 06:01

    This is expected behavior.

    You should use the TimeSpan.Duration() method.

    It returns a new TimeSpan object whose value is the absolute value of the current TimeSpan object.

    http://msdn.microsoft.com/en-us/library/system.timespan.duration.aspx

    0 讨论(0)
  • 2021-01-15 06:10

    I guess I could just take the absolute value, but the fact that it returns a negative value, makes me doubt if the calculations are correct.

    Why? nextDay is earlier than previousDay, so of course subtracting previousDay will give a negative result.

    You're effectively asking "How many days do I need to add to previousDay in order to get to nextDay? The answer is -28.

    What does concern me is the names here - I'd expect a nextDay value to always be later than a previousDay value - so either the way you're finding those values is incorrect, or you need to change the names to make the meaning clearer. Presumably they're not "next" and "previous" in respect to the same context.

    0 讨论(0)
  • 2021-01-15 06:13

    I think this is because of there is no '1998-06-31' date in the calendar.

    0 讨论(0)
提交回复
热议问题