### Apache Airflow version

2.2.2 (latest released)

### Operating System

Ubuntu 18.04.6

### Versions of Apache Airflow Providers

_No response_

### Deployment

Other Docker-based deployment

### Deployment details

_No response_

### What happened

The deprecated variable `execution_date` raises an error when used in an f string template with date string formatting.

```python
In [1]: execution_date
DeprecationWarning: Accessing 'execution_date' from the template is deprecated and will be removed in a future version. Please use 'logical_date' or 'data_interval_start' instead.
Out[1]: <Proxy at 0x7fb6f9af81c0 wrapping DateTime(2021, 11, 18, 0, 0, 0, tzinfo=Timezone('UTC')) at 0x7fb6f9aeff90 with factory <function TaskInstance.get_template_context.<locals>.deprecated_proxy.<locals>.deprecated_func at 0x7fb6f98699d0>>

In [2]: f"{execution_date:%Y-%m-%d}"
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
----> 1 f"{execution_date:%Y-%m-%d}"

TypeError: unsupported format string passed to Proxy.__format__
```



### What you expected to happen

Executing `f"{execution_date:%Y-%m-%d}"` should return a string and not raise an error. 

### How to reproduce

```python
from datetime import datetime
from airflow import DAG
from airflow.operators.python import PythonOperator


def test_str_fmt(execution_date: datetime):
    return f"{execution_date:%Y-%m-%d}"


dag = DAG(
    dag_id="Test_Date_String",
    schedule_interval="@daily",
    catchup=False,
    default_args={
        "depends_on_past": False,
        "start_date": datetime(2021, 11, 1),
        "email": None,
        "email_on_failure": False,
        "email_on_retry": False,
        "retries": 0,
    },
)

with dag:
    test_task = PythonOperator(
        task_id="test_task",
        python_callable=test_str_fmt,
    )
```

### Anything else


```python
from datetime import datetime
...
datetime.fromisoformat(next_ds)
TypeError: fromisoformat: argument must be str
```


### Are you willing to submit PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

airflow/models/taskinstance.py
self,
        verbose: bool = True,
        ignore_all_deps: bool = False,
        ignore_depends_on_past: bool = False,
        ignore_task_deps: bool = False,
        ignore_ti_state: bool = False,
        mark_success: bool = False,
        test_mode: bool = False,
        job_id: Optional[str] = None,
        pool: Optional[str] = None,
        external_executor_id: Optional[str] = None,
        session=None,
    ) -> bool:
        """
        Checks dependencies and then sets state to RUNNING if they are met. Returns
        True if and only if state is set to RUNNING, which implies that task should be
        executed, in preparation for _run_raw_task
        :param verbose: whether to turn on more verbose logging
        :type verbose: bool
        :param ignore_all_deps: Ignore all of the non-critical dependencies, just runs
        :type ignore_all_deps: bool
        :param ignore_depends_on_past: Ignore depends_on_past DAG attribute
        :type ignore_depends_on_past: bool
        :param ignore_task_deps: Don't check the dependencies of this TaskInstance's task