Heim >Backend-Entwicklung >PHP-Tutorial >So verwenden Sie die Strftime-Funktion in PHP

So verwenden Sie die Strftime-Funktion in PHP

不言
不言Original
2018-06-22 09:34:134004Durchsuche

Dieser Artikel stellt hauptsächlich die Verwendung der PHP-Funktion strftime() vor, um die lokale Zeit/das lokale Datum entsprechend den regionalen Einstellungen zu formatieren. Freunde, die sie benötigen, können darauf zurückgreifen it

Definition und Verwendung

strftime()-Funktion formatiert die lokale Zeit/das lokale Datum gemäß den Gebietsschemaeinstellungen.

Syntax

strftime(format, timestamp) Parameter Beschreibung
format Optional. Gibt an, wie Ergebnisse zurückgegeben werden.
Zeitstempel optional.
Tipps und Hinweise
Tipp: Gleiches Verhalten wie gmstrftime(), außer dass die zurückgegebene Zeit die Ortszeit ist.

Beispiel

Geben Sie die Ergebnisse von strftime() und gmstrftime() aus:

<?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 Die ()-Funktion kann Datumszeichenfolgen im Format JJJJ-MM-TT HH:MM:SS in andere Formen von Zeichenfolgen konvertieren.
Die Syntax von strftime() lautet strftime(format, date/time, modifier, modifier, ...)

Es kann Datums- und Uhrzeitangaben mit den folgenden Symbolen formatieren:

%a Abkürzung des Wochentags im aktuellen Gebiet Sonntag bis Samstag
%A Der vollständige Name des Wochentags im aktuellen Bereich Sonntag bis Samstag
%d Der Tag des Monats, Dezimalzahl (Bereich von 01 bis 31) 01 bis 31
%e Der Tag des Monat, Dezimalzahl, eine Ziffer davor. Es wird ein Leerzeichen hinzugefügt (im Bereich von „1“ bis „31“). Nicht wie unter Windows beschrieben implementiert. Weitere Informationen weiter unten. 1 bis 31
%j Der Tag des Jahres als dreistellige Dezimalzahl mit führenden Nullen (im Bereich von 001 bis 366). ) 001 bis 366
%u Entspricht der ISO-8601-Dezimaldarstellung des Wochentags [1,7], 1 bedeutet Montag 1 (Montag) bis 7 (Sonntag)
%w Der Wochentag, Sonntag ist 0 0 (Sonntag) bis 6 (Samstag)
Woche --- ---
%U Die erste Woche des Jahres, beginnend mit dem ersten Sonntag der ersten Woche als erstem Tag 13 (für die 13. volle Woche des Jahres)
%V %V – ISO-8601:1988-Format der Woche des Jahres, im Bereich von 01 bis 53, Woche 1 ist die erste des Jahres Die Woche hat noch mindestens 4 Tage übrig, wobei Montag der erste Tag der Woche ist. (Verwenden Sie %G oder %g als Jahreszusammensetzung der entsprechenden Wochennummer des angegebenen Zeitstempels.) 01 bis 53 (wobei 53 eine überlappende Woche darstellt)
% W Die Wochennummer des Jahres, beginnend mit dem ersten Montag der ersten Woche als erster Tag 46 (für die 46. Woche des Jahres, die mit einem Montag beginnt)
Monat --- ---
%b Die Abkürzung des Monats in der aktuellen Region Jan bis Dezember
%B Der vollständige Name des Monats in der aktuellen Region Januar bis Dezember
%h Die Abkürzung des Monats in der aktuellen Region (Alias ​​von %b) Jan bis Dezember
%m Zweistelliger Monat 01 (ist Januar) bis 12 (ist Dezember)
Jahr --- ---
%C Zwei Ziffern zeigen das Jahrhundert an ( das Jahr wird durch 100 geteilt und auf eine ganze Zahl gekürzt) 19 ist das 20. Jahrhundert
%g 2-stelliges Jahr, entsprechend ISO-8601:1988-Wochennummer (siehe %V). Gleiches Format und gleiche Werte wie %V, außer dass dieses Jahr verwendet wird, wenn die ISO-Wochennummer zum vorherigen oder nächsten Jahr gehört. Zum Beispiel: Die Woche vom 6. Januar 2009 ist der 09.
%G Die vollständige vierstellige Version von %g Zum Beispiel: Die Woche vom 3. Januar 2009 ist 2008.
%y Zwei Ziffern zeigen das Jahr an Zum Beispiel: 09 ist 2009, 79 ist 1979
% Y Vierstellige Anzeige des Jahres Zum Beispiel: 2038
Zeit --- - --
%H Zweistellige Stunden im 24-Stunden-Format anzeigen 00 bis 23
%I Zweistellige Stunden im 12-Stunden-Format anzeigen 01 bis 12
%l (Kleinbuchstabe ' L') Zeigt die Stunde im 12-Stunden-Format an, mit einem Leerzeichen vor einer einzelnen Zahl 1 bis 12
%M zweistellige Anzahl der Minuten 00 bis 59
%p Großbuchstaben „AM“ oder „PM“ der angegebenen Zeit Zum Beispiel: 00:31 ist AM, 22:23 ist PM
%P Der Kleinbuchstabe „am“ oder „pm“ von die angegebene Zeit Zum Beispiel: 00:31 ist Vormittag, 22:23 ist Nachmittag
%r ist dasselbe wie „%I :%M:%S %p" Zum Beispiel: 21:34:17 ist 21:34:17 Uhr
%R ist dasselbe wie „%H:%M“ Zum Beispiel: 00:35 Uhr ist 00:35, 16:44 Uhr ist 16:44
% S Zwei Ziffern stellen Sekunden dar 00 bis 59
%T ist dasselbe wie „%H:%M :%S" Zum Beispiel: 21:34:17 Uhr Ja 21:34:17
%X Bevorzugte Zeitdarstellung für die aktuelle Region, ohne Datum Zum Beispiel: 03:59:16 oder 15:59:16
%z Zeitzonenversatz oder -abkürzung (vom Betriebssystem bestimmt) von UTC Zum Beispiel: Eastern Time ist -0500 oder EST
%Z %z Kein Zeitzonenversatz oder Abkürzung für UTC angegeben (vom Betriebssystem bestimmt) z. B.: -0500 oder EST ist Eastern Time
Zeit- und Datumsstempel - -- ---
%c Der bevorzugte Datums- und Uhrzeitausdruck in der aktuellen Region Zum Beispiel: 5. Februar 2009 00:45:10 Uhr ist Dienstag 5. Februar 00:45:10 2009
%D Dasselbe wie „%m/%d/ %y" Zum Beispiel: Der 5. Februar 2009 ist der 02/05/09
%F Gleiches wie „%Y-%m -%d" (häufig in Datenbank-Datumsstempeln verwendet) Zum Beispiel: Der 5. Februar 2009 ist der 05.02.2009
%s The Zeitstempel der Unix-Epoche (identisch mit der Funktion time()) Zum Beispiel: 10. September 1979 8:40:00 Uhr ist 305815200
%x Die bevorzugte Zeitdarstellung für die aktuelle Zone, ohne Zeit Zum Beispiel: Der 5. Februar 2009 ist der 02.05.09
Andere --- ---
%n Zeilenumbruch ("n") - --
%t Tabulatorzeichen ("t") ---
%% Prozentzeichen („%“ im Text)

这个参数的最大长度是 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编码函数的解析

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Strftime-Funktion in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn