Problem

Write code that enhances all date objects such that you can call the date.nextDay() method on any date object and it will return the next day in the format YYYY-MM-DD as a string.

Examples

Example 1:

1
2
3
4
5
Input: date = "2014-06-20"
Output: "2014-06-21"
Explanation: 
const date = new Date("2014-06-20");
date.nextDay(); // "2014-06-21"

Example 2:

1
2
3
Input: date = "2017-10-31"
Output: "2017-11-01"
Explanation: The day after 2017-10-31 is 2017-11-01.

Constraints:

  • new Date(date) is a valid date object

Solution

Method 1 -

Intuition

We need to add a method to the Date object that returns the next day in YYYY-MM-DD format. This can be done by extending Date.prototype.

Approach

Add a method nextDay to Date.prototype. In the method, create a new Date object, add one day, and format the result as YYYY-MM-DD.

Code

1
2
3
4
5
6
7
8
Date.prototype.nextDay = function() {
    const next = new Date(this.getTime());
    next.setDate(next.getDate() + 1);
    const yyyy = next.getFullYear();
    const mm = String(next.getMonth() + 1).padStart(2, '0');
    const dd = String(next.getDate()).padStart(2, '0');
    return `${yyyy}-${mm}-${dd}`;
}
1
2
3
4
5
from datetime import datetime, timedelta
def next_day(date_str):
    dt = datetime.strptime(date_str, "%Y-%m-%d")
    next_dt = dt + timedelta(days=1)
    return next_dt.strftime("%Y-%m-%d")
1
2
3
4
5
import java.time.LocalDate;
public String nextDay(String dateStr) {
    LocalDate date = LocalDate.parse(dateStr);
    return date.plusDays(1).toString();
}

Complexity

  • ⏰ Time complexity: O(1) for all methods.
  • 🧺 Space complexity: O(1).