Get num of days between two dates, keep num of days the same when date is changed

User wants to edit start date. Days between start date and end date must always be the same.

For example

Start Date is originally 28/07/2014 and End Date is 01/08/2014

The dates are 4 days apart

User changes start date to 01/06/2014

End Date must now be 05/06/2014

Having difficulty wrapping my head around this logic.

Jon Skeet
people
quotationmark

There are two aspects to this:

Working out the number of days between two dates

Personally, I'd use my Noda Time API for this, but you could still use the BCL's DateTime type - subtract one DateTime from the other to get a TimeSpan, and then use TimeSpan.TotalDays property. Then convert the result to an integer. (You'll need to make sure they really are just dates, to avoid getting a fraction of a day.) You could even just keep the TimeSpan if you wanted to.

Adjusting one date based on another

If you know how many days you want to keep the two apart, you just need to use DateTime.AddDays appropriately. For example, if startDate has changed:

endDate = startDate.AddDays(days)

And if endDate has changed:

startDate = endDate.AddDays(-days)

people

See more on this question at Stackoverflow