I would like to modify the date of a pandas Timestamp variable but keeping the time as it is. E.g. having the following timestamp

```
time_stamp_1 = pd.Timestamp('1900-1-1 13:59')

```

I would like to set the date to the 3rd of February 2000. I.e. after the modification the print statement

```
print(time_stamp_1)

```

should return 

```
2000-02-03 13:59:00

```
['https://Stackoverflow.com/questions/58029124', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/1833326/']
Use [`Timestamp.replace`](http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Timestamp.replace.html):

```
print (time_stamp_1.replace(year=2000, month=2, day=3))
2000-02-03 13:59:00

```

Or add to `Timestamp` only times converted to `timedelta` with times extracted by [`Timestamp.strftime`](http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Timestamp.strftime.html):

```
print (pd.Timestamp('2000-02-03') + pd.Timedelta(time_stamp_1.strftime('%H:%M:%S')))
#alternative
print (pd.Timestamp('2000-02-03') + pd.to_timedelta(time_stamp_1.strftime('%H:%M:%S')))
2000-02-03 13:59:00

```
You can do subtraction with `normalize`

```
pd.to_datetime('2000-02-03') + (time_stamp_1 - time_stamp_1.normalize())
Timestamp('2000-02-03 13:59:00')

```

---

This scales much better if you have a Series/DataFrame because it avoids `.strftime`, though is slower for a single timestamp.

```
import perfplot
import pandas as pd

perfplot.show(
    setup=lambda n: pd.Series([pd.Timestamp('1900-1-1 13:59')]*n), 
    kernels=[
        lambda s: pd.to_datetime('2000-02-03') + (s - s.dt.normalize()),
        lambda s: pd.Timestamp('2000-02-03') + pd.to_timedelta(s.dt.strftime('%H:%M:%S')),
    ],
    labels=["normalize", "strftime"],
    n_range=[2 ** k for k in range(16)],
    equality_check=None,  # Because datetime type
    xlabel="len(s)"
)

```

[![enter image description here](https://i.stack.imgur.com/L10HT.png)](https://i.stack.imgur.com/L10HT.png)