why doing an elseif ? Converting an immutable datetime to a mutable one seems weird to me. The logic can be the same for all datetimes