Điều này xảy ra vì ngày tháng biểu thị bằng "giờ địa phương" chứ không phải "utc" mà chúng được lưu trữ trừ khi bạn yêu cầu:
moment(obj.date).utc().format('MM-DD-YYYY');
Vì vậy, sự khác biệt được thể hiện bằng múi giờ đã định cấu hình của bạn khi điều chỉnh ngày.
Xem UTC trong tài liệu.