---
title: strftime
summary: null
url: >-
  https://www.fastly.com/documentation/reference/vcl/functions/date-and-time/strftime
---

```
STRING strftime(STRING format, TIME time)
```

**Available in:** all subroutines

Formats a time to a string. This uses
[standard POSIX strftime formats](https://www.unix.com/man-page/FreeBSD/3/strftime/).

> **HINT:** Regular strings ("short strings") in VCL use `%xx` escapes (percent encoding) for special characters, which would conflict with the `%` used in the `strftime` format. For the `strftime` examples, we use VCL "long strings" `{"..."}`, which do not use the `%xx` escapes. Alternatively, you could use `%25` for each `%`.

Valid format specifiers include:

| Format | Substitution                                                                                                                                                                                                                                                                                                                |
| :----: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|  `%a`  | The abbreviated weekday name according to the current locale.                                                                                                                                                                                                                                                               |
|  `%A`  | The full weekday name according to the current locale.                                                                                                                                                                                                                                                                      |
|  `%b`  | The abbreviated month name according to the current locale.                                                                                                                                                                                                                                                                 |
|  `%B`  | The full month name according to the current locale.                                                                                                                                                                                                                                                                        |
|  `%c`  | The preferred date and time representation for the current locale.                                                                                                                                                                                                                                                          |
|  `%C`  | The century number (year/100) as a 2-digit integer.                                                                                                                                                                                                                                                                         |
|  `%d`  | The day of the month as a decimal number (range 01 to 31).                                                                                                                                                                                                                                                                  |
|  `%D`  | Equivalent to `%m`/`%d`/`%y`.                                                                                                                                                                                                                                                                                               |
|  `%e`  | Like `%d`, the day of the month as a decimal number, but a leading zero is replaced by a space.                                                                                                                                                                                                                             |
|  `%F`  | Equivalent to `%Y`-`%m`-`%d` (the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date format).                                                                                                                                                                                                                          |
|  `%G`  | The  [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) week-based year with century as a decimal number. The 4-digit year corresponding to the ISO week number (see `%V`). This has the same format and value as `%Y`, except that if the ISO week number belongs to the previous or next year, that year is used instead. |
|  `%g`  | Like `%G`, but without century, that is; with a 2-digit year (00 to 99).                                                                                                                                                                                                                                                    |
|  `%h`  | Equivalent to `%b`.                                                                                                                                                                                                                                                                                                         |
|  `%H`  | The hour as a decimal number using a 24-hour clock (range 00 to 23).                                                                                                                                                                                                                                                        |
|  `%I`  | The hour as a decimal number using a 12-hour clock (range 01 to 12).                                                                                                                                                                                                                                                        |
|  `%j`  | The day of the year as a decimal number (range 001 to 366).                                                                                                                                                                                                                                                                 |
|  `%m`  | The month as a decimal number (range 01 to 12).                                                                                                                                                                                                                                                                             |
|  `%M`  | The minute as a decimal number (range 00 to 59).                                                                                                                                                                                                                                                                            |
|  `%n`  | A newline character.                                                                                                                                                                                                                                                                                                        |
|  `%p`  | Either `AM` or `PM` according to the given time value, or the corresponding strings for the current locale. Noon is treated as `PM` and midnight as `AM`.                                                                                                                                                                   |
|  `%r`  | The time in a.m. or p.m. notation. In the POSIX locale this is equivalent to `%I`:`%M`:`%S` `%p`.                                                                                                                                                                                                                           |
|  `%R`  | The time in 24-hour notation (`%H`:`%M`). For a version including the seconds, see `%T`.                                                                                                                                                                                                                                    |
|  `%s`  | The number of seconds since the epoch; that is, since 1970-01-01 00:00:00 UTC.                                                                                                                                                                                                                                              |
|  `%S`  | The second as a decimal number (range 00 to 60). (A range up to 60 allows for occasional leap seconds.)                                                                                                                                                                                                                     |
|  `%t`  | A tab character.                                                                                                                                                                                                                                                                                                            |
|  `%T`  | The time in 24-hour notation (`%H`:`%M`:`%S`).                                                                                                                                                                                                                                                                              |
|  `%u`  | The day of the week as a decimal, range 1 to 7, Monday being 1. See also `%w`.                                                                                                                                                                                                                                              |
|  `%U`  | The week number of the current year as a decimal number, range 00 to 53, starting with the first Sunday as the first day of week 01. See also `%V` and `%W`.                                                                                                                                                                |
|  `%V`  | The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) week number of the current year as a decimal number, range 01 to 53, where week 1 is the first week that has at least four days in the new year. See also `%U` and `%W`.                                                                                             |
|  `%w`  | The day of the week as a decimal, range 0 to 6, Sunday being 0.  See also `%u`.                                                                                                                                                                                                                                             |
|  `%W`  | The week number of the current year as a decimal number, range 00 to 53, starting with the first Monday as the first day of week 01.                                                                                                                                                                                        |
|  `%x`  | The preferred date representation for the current locale, without the time.                                                                                                                                                                                                                                                 |
|  `%X`  | The preferred time representation for the current locale, without the date.                                                                                                                                                                                                                                                 |
|  `%y`  | The year as a decimal number without a century (range 00 to 99).                                                                                                                                                                                                                                                            |
|  `%Y`  | The year as a decimal number, including the century.                                                                                                                                                                                                                                                                        |
|  `%z`  | The time-zone as an hour offset from GMT. Required to emit [RFC 822](https://tools.ietf.org/html/rfc822)-conformant dates (using `%a`, `%d` `%b` `%Y` `%H`:`%M`:`%S` `%z`).                                                                                                                                                 |
|  `%Z`  | The timezone or name or abbreviation.                                                                                                                                                                                                                                                                                       |
|  `%%`  | A literal `%` character.                                                                                                                                                                                                                                                                                                    |

Format specifiers which produce numbers may include one of the following flags after the `%`:

| Flag | Modification            |
| :--: | :---------------------- |
|  `0` | Use zeros for padding.  |
|  `_` | Use spaces for padding. |
|  `-` | Do not use any padding. |

For example, `%-H` would produce `3` while `%H` would produce `03`.

The POSIX standard `E` and `O` modifier characters have no effect. For example, `%Ec` is equivalent to `%c`.

This function is not prefixed with the `std.` namespace.

## Examples

```vcl
# Concise format
set resp.http.now = strftime({"%Y-%m-%d %H:%M"}, now);
# resp.http.now is now e.g. 2006-01-02 22:04

# RFC 5322 format
set resp.http.start = strftime({"%a, %d %b %Y %T %z"}, time.start);
# resp.http.start is now e.g. Mon, 02 Jan 2006 22:04:05 +0000

# ISO 8601 format
set resp.http.end = strftime({"%Y-%m-%dT%H:%M:%SZ"}, time.end);
# resp.http.end is now e.g. 2006-01-02T22:04:05Z
```
