# UI for Selecting Date Time Differences

• I'm creating a Windows MFC app in which I can ask the user to select a time difference from years right down to the second from a known time. For the sake of example, let's assume a file's creation date of 2020-11-01 16:00:00.

I could implement this as 6 spin controls to pick the difference, but perhaps this is not the best approach. Each is initialized to 0 and has positive and negative ranges for appropriate values—ie: 0 to 59 and -59 (total of 119 distinct values) for minutes. If I want to change the date & time to a future value like 2020-12-07 17:30:45, I could change each of the spin controls to add 1 month, 6 days, 1 hour, 30 minutes, and 45 seconds. Each part of the date is distinct, so I could add or subtract from each field the necessary amount to each field—ie: changing 2020-01-01 to 2019-12-31 would mean subtracting 1 year, adding 11 months, and adding 30 days.

What I'm not sure about is how most users will perceive time differences where any of those fields have a negative value. For example, if I now want to change 2020-12-01 16:00:00 to 2020-12-01 15:00:00 (ie: an hour fall back to account for DST change), it is easy enough to select -1 hours.

If I want to subtract a total of 1 hour, 23 minutes, and 45 seconds, should I be picking -1 hour, -23 minutes, -45 seconds or should I assume that as soon as a negative value is picked, the ranges for the following ones are changed to positive values only and assume they are to be concatenated to that negative value; that is to say, does picking -1 hour and 1 minute (positive) imply substracting 1:01:00 from a given time or would that be construed as a convenience factor of subtracting 1 hour but adding back 1 minute for a net effect of subtracting 59 minutes? It takes less effort to pick +1 from minutes rather than having to click 59 times down on minutes to -59 or (or click and hold once) to accelerate values.

I'm assuming MFC's spin control has an "acceleration" value where, if I click and hold on 0, it will accelerate through my acceleration value of 10 to get to 10, 20, 30, etc (or 5 for 5, 10, 15, 20, 25, etc.). (or negative if I'm holding down oh the down arrow), but I haven't coded that yet pending responses I get here.

Anyway, the bottom line is I want to adjust dates and times from a known value. I hope my explanation doesn't add to the confusion, but I'll leave it to my fellow software developers to let me know their approach to this. Thanks!

• Is it more intuitive for the user to input the new time, as opposed to the time difference, especially if you are considering allowing the user to both add and subtract within the same input?

RE: time difference, Before entering the time difference, I would allow the user to pick "+" or "-" as I believe adding and subtracting different units in the same calculation would be confusing.

Also, I would not overwrite existing data.

2

2

2

2

2

2

2

2