Vì bạn đã có câu trả lời cho những gì sai với mã của bạn, tôi có thể đưa ra một góc nhìn khác về cách bạn có thể chơi với datetimes nói chung và giải quyết vấn đề của bạn một cách cụ thể.
Thông thường, bạn thấy mình đặt ra một vấn đề về giải pháp. Đây chỉ là một trong những lý do bạn kết thúc với một mã bắt buộc . Thật tuyệt nếu nó hoạt động mặc dù; chỉ có những lựa chọn khác, có thể bảo trì nhiều hơn. Một trong số đó là mã khai báo . Vấn đề là hỏi cái gì bạn cần, thay vì làm thế nào để đạt được điều đó.
Trong trường hợp cụ thể của bạn, điều này có thể trông giống như sau. Trước tiên, bạn cần tìm hiểu xem bạn đang tìm kiếm cái gì , nghĩa là khám phá sự trừu tượng. Trong trường hợp của bạn, có vẻ như bạn cần một ngày . Không chỉ bất kỳ ngày nào, mà là một trong những đại diện tiêu chuẩn. Nói, ngày ISO8601. Có ít nhất hai triển khai: lần đầu tiên là một ngày được phân tích cú pháp từ một chuỗi có định dạng ISO8601 (hoặc một chuỗi ở bất kỳ định dạng nào khác thực sự) và lần thứ hai là một ngày trong tương lai là một ngày sau đó. Do đó, toàn bộ mã có thể trông như thế:
(new Future(
new DateTimeParsedFromISO8601('2009-09-30 20:24:00'),
new OneDay()
))
->value();
Để biết thêm ví dụ với trò tung hứng datetime, hãy xem cái này .