Maison >développement back-end >tutoriel php >Comment utiliser la fonction strftime en php

Comment utiliser la fonction strftime en php

不言
不言original
2018-06-22 09:34:133916parcourir

Cet article présente principalement l'utilisation détaillée de la fonction php strftime. La fonction strftime() formate l'heure/la date locale en fonction des paramètres régionaux. Généralement, elle peut être utilisée pour le formatage de l'heure. Les amis qui en ont besoin peuvent s'y référer. La fonction it

Définition et utilisation

strftime() formate l'heure/la date locale en fonction des paramètres régionaux.

Syntaxe

strftime(format, timestamp) Paramètre Description
format Facultatif. Spécifie comment les résultats sont renvoyés.
horodatage facultatif.
Conseils et notes
Astuce : même comportement que gmstrftime(), sauf que l'heure renvoyée est l'heure locale.

Exemple

Afficher les résultats de strftime() et gmstrftime() :

<?php教程
echo(strftime("%b %d %Y %X", mktime(20,0,0,12,31,98)));
echo(gmstrftime("%b %d %Y %X", mktime(20,0,0,12,31,98)));

//输出当前日期、时间和时区
echo(gmstrftime("It is %a on %b %d, %Y, %X time zone: %Z",time()));
?>

strftime() peut convertir les chaînes de date au format AAAA-MM-JJ HH:MM:SS en d'autres formes de chaînes.

La syntaxe de strftime() est strftime(format, date/time, modifier, modifier, ...)

Il peut formater les dates et les heures avec les symboles suivants :

%a Abréviation du jour de la semaine dans la zone actuelle Dim au samedi
%A Le nom complet du jour de la semaine dans la zone actuelle Du dimanche au samedi
%d Le jour du mois, nombre décimal (Plage de 01 à 31) 01 à 31
%e Le jour du mois, nombre décimal, un chiffre avant Un espace sera ajouté (plage de « 1 » à « 31 ») Non implémenté comme décrit sous Windows. Plus d'informations ci-dessous. 1 à 31
%j Le jour de l'année sous forme de nombre décimal à trois chiffres avec des zéros non significatifs (allant de 001 à 366 ) 001 à 366
%u Conforme à la représentation décimale ISO-8601 du jour de la semaine [1,7], 1 signifie lundi 1 (lundi) à 7 (dimanche)
%w Le jour de la semaine, dimanche est 0 0 (dimanche) à 6 (samedi)
semaine --- ---
%U La première semaine de l'année, à partir du premier dimanche de la première semaine comme premier jour 13 (pour la 13ème semaine complète de l'année)
%V %V - Format ISO-8601:1988 de la semaine de l'année, allant de 01 à 53, la semaine 1 est la première de l'année Il reste au moins 4 jours dans la semaine, le lundi étant le premier jour de la semaine. (Utilisez %G ou %g comme composition annuelle du numéro de semaine correspondant de l'horodatage spécifié.) 01 à 53 (où 53 représente une semaine qui se chevauche)
% W Le numéro de semaine de l'année, à partir du premier lundi de la première semaine comme premier jour 46 (pour la 46ème semaine de l'année commençant par un lundi)
mois --- ---
%b L'abréviation du mois dans la région actuelle Janvier à décembre
%B Le nom complet du mois dans la région actuelle Janvier à décembre
%h L'abréviation du mois dans la région actuelle (alias de %b) Jan à décembre
%m Mois à deux chiffres 01 (est janvier) au 12 (est décembre)
année --- ---
%C Deux chiffres affichent le siècle ( l'année est divisée par 100 et tronquée à un nombre entier) 19 est le 20ème siècle
%g année à 2 chiffres, conforme à ISO-8601 : numéro de semaine 1988 (voir %V). Même format et mêmes valeurs que %V, sauf que si le numéro de semaine ISO appartient à l'année précédente ou suivante, cette année est utilisée. Par exemple : la semaine du 6 janvier 2009 est le 09.
%G La version complète à quatre chiffres de %g Par exemple : la semaine du 3 janvier 2009 est 2008.
%y Deux chiffres affichent l'année Par exemple : 09 est 2009, 79 est 1979
% Y Année d'affichage à quatre chiffres Par exemple : 2038
Heure --- - --
%H Afficher les heures à deux chiffres au format 24 heures 00 à 23
%I Affiche les heures à deux chiffres au format 12 heures 01 à 12
%l (minuscule ' L') Affiche l'heure au format 12 heures, avec un espace avant un seul chiffre 1 à 12
%M deux chiffres Nombre de minutes 00 à 59
%p Majuscule "AM" ou "PM" de l'heure spécifiée Par exemple : 00h31 est AM, 22h23 est PM
%P Le "am" ou "pm" minuscule de l'heure spécifiée Par exemple : 00h31 est le matin, 22h23 est l'après-midi
%r est identique à "%I :%M:%S %p" Par exemple : 21:34:17 est 21:34:17
%R est identique à "%H:%M" Par exemple : 00h35 correspond à 00h35, 16h44 correspond à 16h44
% S Deux chiffres représentent les secondes 00 à 59
%T est identique à "%H:%M :%S" Par exemple : 09:34:17 PM Oui 21:34:17
%X Représentation de l'heure préférée pour le région actuelle, hors date Par exemple : 03:59:16 ou 15:59:16
%z Décalage ou abréviation du fuseau horaire (déterminé par le système d'exploitation) à partir de UTC Par exemple : l'heure de l'Est est -0500 ou EST
%Z %z Aucun décalage de fuseau horaire ou l'abréviation de UTC donnée (déterminée par le système d'exploitation) par exemple : -0500 ou EST est l'heure de l'Est
horodatage - -- ---
%c L'expression de date et d'heure préférée dans la région actuelle Par exemple : Le 5 février 2009 00:45:10 est le mardi 5 février 00:45:10 2009
%D Identique à "%m/%d/ %y" Par exemple : le 5 février 2009 est le 05/02/09
%F Identique à "%Y-%m -%d" (couramment utilisé dans les horodatages des bases de données) Par exemple : le 5 février 2009 est le 05/02/2009
%s Le horodatage de l'époque Unix (identique à la fonction time()) Par exemple : 10 septembre 1979 8:40:00 est 305815200
%x La représentation temporelle préférée pour le fuseau actuel, hors heure Par exemple : le 5 février 2009 est le 05/02/09
Autres --- ---
%n Saut de ligne ("n") - --
%t Caractère de tabulation ("t") ---
%% Caractère de pourcentage ("%" sur le texte)

这个参数的最大长度是 1023 个字符。

Warning
尽管 ISO 9889:1999(当前的 C 标准)明确指出一周从星期一开始,但是 Sun Solaris 的一周似乎从星期天开始并作为 1。所以 %u 的结果也许不会和手册里描述得一样。

Warning
仅针对 Windows:这个函数里 %e 修饰符修饰符还不能支持 Windows。 为了得到这个值可以用 %#d 修饰符来代替。下例说明了如何写一个跨平台支持的函数。

Warning
仅针对 Mac OS X:这个函数里 %P 修饰符还不能支持 Mac OS X。

timestamp
可选的 timestamp 参数是一个 integer 的 Unix 时间戳,如未指定,参数值默认为当前本地时间。也就是说,其值默认为 time() 的返回值。

strftime()的用法举例如下:

select strftime('%Y.%m.%d %H:%M:%S','now','localtime');
结果:2018.06.21 21:41:09
其实更好的用法是这样的,比如统,本月或本年的支出:
select strftime('%Y-%m',日期) as 月份,sum(支出) as 月支出 from 流水帐 group by 月份;

Example #1 strftime() locale examples

<?php
setlocale(LC_TIME, "C");
echo strftime("%A");
setlocale(LC_TIME, "fi_FI");
echo strftime(" in Finnish is %A,");
setlocale(LC_TIME, "fr_FR");
echo strftime(" in French %A and");
setlocale(LC_TIME, "de_DE");
echo strftime(" in German %A.\n");
?>

Example #2 ISO 8601:1988 week number example

<?php
/*   December 2002 / January 2003
ISOWk M  Tu W  Thu F  Sa Su
----- ----------------------------
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  */

// Outputs: 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";

// Outputs: 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";

// Outputs: 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";

// Outputs: 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";



/*   December 2004 / January 2005
ISOWk M  Tu W  Thu F  Sa Su
----- ----------------------------
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  */

// Outputs: 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";

// Outputs: 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";

// Outputs: 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";

// Outputs: 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";

?>

Example #3 Cross platform compatible example using the %e modifier

<?php

// Jan 1: results in: &#39;%e%1%&#39; (%%, e, %%, %e, %%)
$format = &#39;%%e%%%e%%&#39;;

// Check for Windows to find and replace the %e 
// modifier correctly
if (strtoupper(substr(PHP_OS, 0, 3)) == &#39;WIN&#39;) {
  $format = preg_replace(&#39;#(?<!%)((?:%%)*)%e#&#39;, &#39;\1%#d&#39;, $format);
}

echo strftime($format);
?>

Example #4 Display all known and unknown formats.

<?php
// Describe the formats.
$strftimeFormats = array(
  &#39;A&#39; => &#39;A full textual representation of the day&#39;,
  &#39;B&#39; => &#39;Full month name, based on the locale&#39;,
  &#39;C&#39; => &#39;Two digit representation of the century (year pided by 100, truncated to an integer)&#39;,
  &#39;D&#39; => &#39;Same as "%m/%d/%y"&#39;,
  &#39;E&#39; => &#39;&#39;,
  &#39;F&#39; => &#39;Same as "%Y-%m-%d"&#39;,
  &#39;G&#39; => &#39;The full four-digit version of %g&#39;,
  &#39;H&#39; => &#39;Two digit representation of the hour in 24-hour format&#39;,
  &#39;I&#39; => &#39;Two digit representation of the hour in 12-hour format&#39;,
  &#39;J&#39; => &#39;&#39;,
  &#39;K&#39; => &#39;&#39;,
  &#39;L&#39; => &#39;&#39;,
  &#39;M&#39; => &#39;Two digit representation of the minute&#39;,
  &#39;N&#39; => &#39;&#39;,
  &#39;O&#39; => &#39;&#39;,
  &#39;P&#39; => &#39;lower-case "am" or "pm" based on the given time&#39;,
  &#39;Q&#39; => &#39;&#39;,
  &#39;R&#39; => &#39;Same as "%H:%M"&#39;,
  &#39;S&#39; => &#39;Two digit representation of the second&#39;,
  &#39;T&#39; => &#39;Same as "%H:%M:%S"&#39;,
  &#39;U&#39; => &#39;Week number of the given year, starting with the first Sunday as the first week&#39;,
  &#39;V&#39; => &#39;ISO-8601:1988 week number of the given year, starting with the first week of the year with at least 4 weekdays, with Monday being the start of the week&#39;,
  &#39;W&#39; => &#39;A numeric representation of the week of the year, starting with the first Monday as the first week&#39;,
  &#39;X&#39; => &#39;Preferred time representation based on locale, without the date&#39;,
  &#39;Y&#39; => &#39;Four digit representation for the year&#39;,
  &#39;Z&#39; => &#39;The time zone offset/abbreviation option NOT given by %z (depends on operating system)&#39;,
  &#39;a&#39; => &#39;An abbreviated textual representation of the day&#39;,
  &#39;b&#39; => &#39;Abbreviated month name, based on the locale&#39;,
  &#39;c&#39; => &#39;Preferred date and time stamp based on local&#39;,
  &#39;d&#39; => &#39;Two-digit day of the month (with leading zeros)&#39;,
  &#39;e&#39; => &#39;Day of the month, with a space preceding single digits&#39;,
  &#39;f&#39; => &#39;&#39;,
  &#39;g&#39; => &#39;Two digit representation of the year going by ISO-8601:1988 standards (see %V)&#39;,
  &#39;h&#39; => &#39;Abbreviated month name, based on the locale (an alias of %b)&#39;,
  &#39;i&#39; => &#39;&#39;,
  &#39;j&#39; => &#39;Day of the year, 3 digits with leading zeros&#39;,
  &#39;k&#39; => &#39;Hour in 24-hour format, with a space preceding single digits&#39;,
  &#39;l&#39; => &#39;Hour in 12-hour format, with a space preceding single digits&#39;,
  &#39;m&#39; => &#39;Two digit representation of the month&#39;,
  &#39;n&#39; => &#39;A newline character ("\n")&#39;,
  &#39;o&#39; => &#39;&#39;,
  &#39;p&#39; => &#39;UPPER-CASE "AM" or "PM" based on the given time&#39;,
  &#39;q&#39; => &#39;&#39;,
  &#39;r&#39; => &#39;Same as "%I:%M:%S %p"&#39;,
  &#39;s&#39; => &#39;Unix Epoch Time timestamp&#39;,
  &#39;t&#39; => &#39;A Tab character ("\t")&#39;,
  &#39;u&#39; => &#39;ISO-8601 numeric representation of the day of the week&#39;,
  &#39;v&#39; => &#39;&#39;,
  &#39;w&#39; => &#39;Numeric representation of the day of the week&#39;,
  &#39;x&#39; => &#39;Preferred date representation based on locale, without the time&#39;,
  &#39;y&#39; => &#39;Two digit representation of the year&#39;,
  &#39;z&#39; => &#39;Either the time zone offset from UTC or the abbreviation (depends on operating system)&#39;,
  &#39;%&#39; => &#39;A literal percentage character ("%")&#39;,
);

// Results.
$strftimeValues = array();

// Evaluate the formats whilst suppressing any errors.
foreach($strftimeFormats as $format => $description){
  if (False !== ($value = @strftime("%{$format}"))){
    $strftimeValues[$format] = $value;
  }
}

// Find the longest value.
$maxValueLength = 2 + max(array_map(&#39;strlen&#39;, $strftimeValues));

// Report known formats.
foreach($strftimeValues as $format => $value){
  echo "Known format  : &#39;{$format}&#39; = ", str_pad("&#39;{$value}&#39;", $maxValueLength), " ( {$strftimeFormats[$format]} )\n";
}

// Report unknown formats.
foreach(array_diff_key($strftimeFormats, $strftimeValues) as $format => $description){
  echo "Unknown format : &#39;{$format}&#39;  ", str_pad(&#39; &#39;, $maxValueLength), ($description ? " ( {$description} )" : &#39;&#39;), "\n";
}
?>

下面是其他网友的补充

php strftime()的使用

string strftime ( string format[,inttimestamp = time() ] )

返回用给定的格式字串对给出的 timestamp 进行格式输出后的字符串。如果没有给出时间戳则用当前的本地时间。

Example1:

<?php
echo &#39;本年中的第·&#39; . strftime(&#39;%W&#39;, strtotime(&#39;+2 week midnight -0 second&#39;)) . &#39;·周&#39;;
?>

本年中的第·31·周

Example2:

<?php
echo "現在時間是:" . strftime(&#39;%d.%B %Y %H:%M:%S&#39;, time());
?>

現在時間是:20.July 2015 17:01:26

Example3:

<?php
echo &#39;日期時間格式化為:&#39; . strftime(&#39;%d.%B %Y %H:%M:%S&#39;, strtotime(&#39;2018-10-15&#39;));
?>

日期時間格式化為:15.October 2018 00:00:00

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

php将时间差转换为字符串的实现

关于php中urlencode()URL编码函数的解析

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn