mktime
strptime
Date/Time Functions
PHP Manual

# strftime

(PHP 4, PHP 5)

strftime — Dar formato a una hora/fecha local de acuerdo a valores de localidad

### Descripción

string strftime ( string `$formato` [, int `$marca_de_tiempo` ] )

Devuelve una cadena con formato de acuerdo a la cadena de formato dada usando la `marca_de_tiempo` dada o la hora local si no se entrega una marca de tiempo. Los nombres de mes y día de la semana y otras cadenas dependientes del idioma respetan la localidad actual definida con setlocale().

Puede que no todos los especificadores de conversión sean soportados por su biblioteca C, en cuyo caso no serán soportados por la función de PHP strftime(). Adicionalmente, no todas las plataformas soportan marcas de tiempo negativas, por lo tanto su rango de fecha puede estar limitado a no antes del valor epoch de Unix. Esto quiere decir que p.ej. %e, %T, %R y %D (pueden haber más) y las fechas anteriores a Jan 1, 1970 no funcionarán en Windows, algunas distribuciones Linux, y algunos otros sistemas operativos. Para sistemas Windows, puede encontrarse una completa reseña de los especificadores de conversión soportados en este » sitio web de MSDN.

### Lista de parámetros

`formato`

  Los siguientes especificadores de conversión son reconocidos en la cadena de formato:

  - %a - nombre abreviado del día de la semana de acuerdo a la localidad actual
  - %A - nombre completo del día de la semana de acuerdo a la localidad actual
  - %b - nombre abreviado del mes de acuerdo a la localidad actual
  - %B - nombre completo del mes de acuerdo a la localidad actual
  - %c - representación de fecha y hora preferida para la localidad actual
  - %C - número de la centuria (el año es dividido en 100 y truncado a un entero, en el rango 00 a 99)
  - %d - día del mes como un número decimal (rango 01 a 31)
  - %D - igual que %m/%d/%y
  - %e - día del mes como un número decimal, un dígito sencillo es precedido por un espacio (rango ' 1' a '31')
  - %g - como %G, pero sin la centuria.
  - %G - El año de 4-dígitos correspondiente al número de semana ISO (vea %V). Éste tiene el mismo formato y valor que %Y, con la excepción de que si el número de semana ISO pertenece al año siguiente o previo, ese año es usado en su lugar.
  - %h - igual que %b
  - %H - hora como un número decimal usando un reloj de 24 horas (rango 00 a 23)
  - %I - hora como número decimal usando un reloj de 12 horas (rango 01 a 12)
  - %j - dúa del año como un número decimal (rango 001 a 366)
  - %m - mes como un número decimal (rango 01 a 12)
  - %M - minuto como un número decimal
  - %n - caracter de nueva línea
  - %p - o bien `am' o `pm' de acuerdo al valor de hora dada, o las cadenas correspondientes para la localidad actual
  - %r - hora en notación a.m. y p.m.
  - %R - hora en notación de 24 horas
  - %S - segundo como un número decimal
  - %t - caracter de tabulación
  - %T - hora actual, equivalente a %H:%M:%S
  - %u - día de la semana como un número decimal [1,7], en donde 1 representa Lunes
    Warning

    Solaris Sun parece iniciar con Domingo como 1, aunque ISO 9889:1999 (el estándar C actual) claramente especifica que debe ser Lunes.

  - %U - número de la semana del año actual como un número decimal, comenzando con el primer Domingo como el primer día de la primera semana
  - %V - el número de semana ISO 8601:1988 del año actual como un número decimal, rango 01 a 53, en donde la semana 1 es la primera semana que tiene por lo menos 4 días en el año actual, y en donde el Lunes es el primer día de la semana. (Use %G o %g para el componente de año que corresponde al número de semana para la marca de tiempo especificada.)
  - %W - número de semana del año actual como un número decimal, comenzando con el primer Lunes como el primer día de la primera semana
  - %w - día de la semana como un decimal, Domingo es 0
  - %x - representación de fecha preferida para la localidad actual sin la hora
  - %X - representación de hora preferida para la localidad actual sin la fecha
  - %y - año como un número decimal sin la centuria (rango 00 a 99)
  - %Y - año como un número decimal incluyendo la centuria
  - %Z o %z - zona horaria o nombre o abreviación
  - %% - un caracter `%' literal

`timestamp`

  The optional `timestamp` parameter is an integer Unix timestamp that defaults to the current local time if a `timestamp` is not given. In other words, it defaults to the value of time().

### Errors/Exceptions

Every call to a date/time function will generate a `E_NOTICE` if the time zone is not valid, and/or a `E_STRICT` message if using the system settings or the TZ environment variable. See also date_default_timezone_set()

### Registro de cambios

Versión | Descripción
--- | ---
5.1.0 | Now issues the `E_STRICT` and `E_NOTICE` time zone errors.

### Ejemplos

Este ejemplo funciona si se tienen las localidades respectivas instaladas en el sistema.

Example #1 Ejemplo de strftime() con localidad

`<?php
setlocale(LC_TIME, "C");
echo strftime("%A");
setlocale(LC_TIME, "fi_FI");
echo strftime(" en Finlandés es %A,");
setlocale(LC_TIME, "fr_FR");
echo strftime(" en Francés %A y");
setlocale(LC_TIME, "de_DE");
echo strftime(" en Alemán %A.\n");
?>`

Example #2 Ejemplo del número de semana ISO 8601:1988

`<?php
/* Diciembre 2002 / Enero 2003
SmISO L M Mi J V S D
----- ----------------------------
51 16 17 18 19 20 21 22
52 23 24 25 26 27 28 29
1 30 31 1 2 3 4 5
2 6 7 8 9 10 11 12
3 13 14 15 16 17 18 19 */
// Imprime: 12/28/2002 - %V,%G,%Y = 52,2002,2002
echo "12/28/2002 - %V,%G,%Y = " . strftime("%V,%G,%Y", strtotime("12/28/2002")) . "\n";
// Imprime: 12/30/2002 - %V,%G,%Y = 1,2003,2002
echo "12/30/2002 - %V,%G,%Y = " . strftime("%V,%G,%Y", strtotime("12/30/2002")) . "\n";
// Imprime: 1/3/2003 - %V,%G,%Y = 1,2003,2003
echo "1/3/2003 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/3/2003")) . "\n";
// Imprime: 1/10/2003 - %V,%G,%Y = 2,2003,2003
echo "1/10/2003 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/10/2003")) . "\n";
/* Diciembre 2004 / Enero 2005
SmISO L M Mi J V S D
----- ----------------------------
51 13 14 15 16 17 18 19
52 20 21 22 23 24 25 26
53 27 28 29 30 31 1 2
1 3 4 5 6 7 8 9
2 10 11 12 13 14 15 16 */
// Imprime: 12/23/2004 - %V,%G,%Y = 52,2004,2004
echo "12/23/2004 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/23/2004")) . "\n";
// Imprime: 12/31/2004 - %V,%G,%Y = 53,2004,2004
echo "12/31/2004 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/31/2004")) . "\n";
// Imprime: 1/2/2005 - %V,%G,%Y = 53,2004,2005
echo "1/2/2005 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/2/2005")) . "\n";
// Imprime: 1/3/2005 - %V,%G,%Y = 1,2005,2005
echo "1/3/2005 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/3/2005")) . "\n";
?>`

### Notes

> Note: %G y %V, que están basados en números de semana ISO 8601:1988 pueden dar resultados inesperados (aunque correctos) si el sistema de numeración no es entendido completamente. Vea los ejemplos de %V en la presente página del manual.

### Ver también

- setlocale() - Fija la información de localización (L10n)
- mktime() - Obtener la marca de tiempo Unix de una fecha
- strptime() - Manipula la hora/fecha obtenida mediante strftime
- » la especificación del Open Group de strftime()

mktime
strptime
Date/Time Functions
PHP Manual