# Using date and time in templates

## Template utilities

### `datefmt`

Format a date/time to output a specific format.

| Example                            | Output          |
| ---------------------------------- | --------------- |
| `{{ timestamp\|datefmt('long') }}` | January 1, 2024 |
| `{{ timestamp\|datefmt('Y') }}`    | 2024            |

More examples of the formats available can be found here: <http://babel.pocoo.org/en/latest/dates.html#date-fields>

### `timefmt`

Format a time to output a specific format.

| Example                             | Output  |
| ----------------------------------- | ------- |
| `{{ timevalue\|timefmt('short') }}` | 3:23 PM |
| `{{ timestamp\|timefmt('a') }}`     | PM      |

More examples of the formats available can be found here: <https://babel.pocoo.org/en/latest/dates.html#time-fields>

### `now`

This is quick access to the current date and time

```markup
<p>The current date is: {{ now|datefmt('MMMM d') }}</p>
```

Output

```markup
<p>The current date is: January 1</p>
```

### `day_name`

Output the name of the day using the "0 index" of the day of the week.

```markup
{{ 3|day_name }}
```

Output

```markup
Wednesday
```

### `to_date`

Utility to parse a date from a string

```markup
{{ '2021-09-01'|to_date }}
```

Optionally, you can also pass a format to the parsing

```markup
{{ '9/1/2021'|to_date(format='%m/%d/%y') }}
```

### `to_datetime`

Utility to parse a date and time from a string

```
{{ '2021-09-01 15:23:00'|to_datetime }}
```

### `to_time`

Utility to parse a time from a string

```
{{ '15:23'|to_time }}
```

Optionally, you can also pass a format to the parsing

```
{{ '1523'|to_time(format='%H%M') }}
```

### `from_timestamp`

Can be used to convert unix timestamps (i.e. an integer) into date/time to be used by other functions.

```markup
{{ 1284101485|from_timestamp|datefmt('long') }}
```

Output

```markup
September 9, 2010
```

## Hide content based on date

Using the advanced jinja2 templating to hide a piece of content depending on the date. This can be used to have something show up before/after/during a date range.

This uses our `to_date` jinja filter. Take note of the greater than and less than operators.

The `to_date` is parsed as the first minute and hour of the day so using greater and less than operators is the best way to write the conditionals.

## Today, future, or past comparisons

### `is_today`

Show something if the date is today

```markup
{% if '2018-12-11'|to_date|is_today %}
  <p>I will show if Dec 12, 2018 is today</p>
{% endif %}
```

### `is_future`

Show something if the date is in the future

```markup
{% if '2018-12-11'|to_date|is_future %}
  <p>I will show if Dec 12, 2018 is in the future</p>
{% endif %}
```

### `is_past`

Show something if the date is in the past

```markup
{% if '2018-12-11'|to_date|is_past %}
  <p>I will show if Dec 12, 2018 is in the past</p>
{% endif %}
```

### Combining the above filters

Show something if the date is today or in the future

```markup
{% if '2018-12-11'|to_date|is_today or '2018-12-11'|to_date|is_future %}
  <p>I will show if Dec 12, 2018 is today or is in the future</p>
{% endif %}
```

## Using now to compare to the current day and time

The `now` is the current date and time

### Starting on a date

```markup
{% if now > '2018-12-11'|to_date %}
  <p>I will start showing on Dec 11, 2018</p>
{% endif %}
```

### Up to a date

```markup
{% if now < '2018-12-11'|to_date %}
  <p>I will stop showing on Dec 11, 2018</p>
{% endif %}
```

### Date range

```markup
{% if now > '2018-12-01'|to_date and now < '2019-01-01'|to_date %}
  <p>I will show for the whole month of December</p>
{% endif %}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.devhub.com/themes-and-custom-templates/hide-content-based-on-date.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
