Notwithstanding the excellent points Darryl has made, I suspect your issue is a bit simpler.
In particular, when you specify a duration in “days,” it is always a prisoner of the project’s “Hours per day” setting in the Project Schedule Options. MSP computes and stores duration values in minutes, then it uses the project’s schedule settings to convert these minutes into (work) “days” which are ultimately variable. (Some other scheduling tools include these conversion factors as attributes of particular calendars rather than of particular projects; that approach has its own issues.)
It’s easy to make a task executing 311 hours of work at 20 hours/day and 5 days/week, starting on the afternoon of 25Apr’19 and finishing on the morning of 17May’19. The duration of that task is 311 hours. This converts to a 15.55-day or 31.1-day duration depending on the “Hours per day” setting (20 or 10 hrs/day, respectively). Apparently, your project is using 10 hours/day.
The “Duration” confusion is an unavoidable consequence of using variable task or resource calendars in MSP. There are two general ways to avoid or reduce the confusion:
a) Specify durations of tasks with non-standard working hours (either task or resource) in hours rather than days;
b) Use a custom duration field with a formula to display an alternate duration depending on the applied task or resource calendar. E.g. Duration1=IIf([Task Calendar]=”5dx2sx10h” Or [Resource Names]=”r-5dx20h”,[Duration]/2,[Duration])
Good luck, tom