downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

strptime> <mktime
Last updated: Fri, 20 Nov 2009

view this page in

strftime

(PHP 4, PHP 5)

strftimeFormatează o oră/dată locală în conformitate cu setările locale

Descrierea

string strftime ( string $format [, int $timestamp = time() ] )

Formatează ora și/sau data în conformitate cu setările locale. Denumirile lunilor şi a zilelor săptămânii şi alte string-uri dependente de limbă sunt în conformitate cu setările locale stabilite prin fincţia setlocale().

Nu toate specificările de convertire pot fi susţinute de biblioteca dumneavoastră C, în care caz ele nu vor fi susţinute de funcţia PHP strftime(). În plus, nu toate platformele susţin timestamp-uri negative, de aceea domeniul de date poate fi limitat la valori nu mai mici de Epoca Unix. Aceasta înseamnă că %e, %T, %R şi %D (pot fi mai multe), precum și date anterioare la Jan 1, 1970 nu vor funcţiona în Windows, unele distibuţii Linux, şi alte câteva sisteme de operare. Pentru sisteme Windows o privire de ansamblu a specificatorilor de conversie susţinuţi poate fi găsită pe acest » website MSDN.

Parametri

format

Următoarele caractere sunt recunoscute în cadrul parametrului format
format Descriere Exemplu de valori întoarse
Ziua --- ---
%a Reprezentarea textuală abreviată a zilei săptămânii De la Sun până la Sat
%A Reprezentarea textuală deplină a zilei săptămânii De la Sunday până la Saturday
%d Ziua lunii din două cifre (prefixată cu zero) De la 01 până la 31
%e Ziua lunii prefixată cu spațiu în cazul unei singure cifre De la 1 până la 31
%j Ziua anului, 3 cifre prefixate cu zerouri De la 001 până la 366
%u Reprezentarea numerică a zilei săptămânii în conformitate cu ISO-8601 De la 1 (Luni) până la 7 (Duminică)
%w Reprezentarea numerică a zilei săptămânii De la 0 (Duminică) până la 6 (Sâmbătă)
Săptămâna --- ---
%U Numărul săptămânii anului dat. Prima Duminică din an este începutul primei săptămâni 13 (pentru a 13-a săptămână deplină a anului)
%V Numărul săptămânii anului dat în conformitate cu ISO-8601:1988, începând cu prima săptămână a anului cu cel puțin 4 zile de lucru, ziua de Luni fiind prima zi a săptămânii De la 01 până la 53 (unde 53 reprezintă o săptămână suprapusă)
%W Reprezentarea numerică a săptămânii din an, începând cu prima zi de Luni ca prima săptămână 46 (pentru a 46-a săptămână a anului începând cu Luni)
Luna --- ---
%b Denumirea abreviată a lunii bazată pe setările locale De la Jan până la Dec
%B Denumirea deplină a lunii bazată pe setările locale De la January până la December
%h Denumirea abreviată a lunii bazată pe setările locale (un pseudonim pentru %b) De la Jan până la Dec
%m Reprezentarea din două cifre a lunii De la 01 (Ianuarie) până la 12 (Decembrie)
Anul --- ---
%C Reprezentarea din două cifre a secolului (anul divizat la 100, trunchiat până la un întreg) 19 pentru secolul 20
%g Reprezentarea din două cifre a anului conform standardului ISO-8601:1988 (vezi %V) Exemplu: 09 pentru 6 Ianuarie, 2009
%G Versiunea deplină din patru cifre a %g Exemplu: 2008 pentru 3 Ianuarie 2009
%y Reprezentarea din două cifre a anului Exemplu: 09 pentru 2009, 79 pentru 1979
%Y Reprezentarea din patru cifre a anului Exemplu: 2038
Ora --- ---
%H Reprezentarea din două cifre a orei în formatul cu 24 de ore De la 00 până la 23
%I Reprezentarea din două cifre a orei în formatul cu 12 ore De la 01 până la 12
%l (litera minusculă 'L') Ora în formatul cu 12 ore, cu un spațiu înaintea orei cu o singură cifră De la 1 până la 12
%M Reprezentarea din două cifre a minutei De la 00 până la 59
%p 'AM' sau 'PM' cu litere majuscule în dependență de oră Exemplu: AM pentru 00:31, PM pentru 22:23
%P 'am' sau 'pm' cu litere minuscule în dependență de oră Exemplu: am pentru 00:31, pm pentru 22:23
%r Echivalent cu "%I:%M:%S %p" Exemplu: 09:34:17 PM pentru 21:34:17
%R Echivalent cu "%H:%M" Exemplu: 00:35 pentru 12:35 AM, 16:44 pentru 4:44 PM
%S Reprezentarea din două cifre a secundei De la 00 până la 59
%T Echivalent cu "%H:%M:%S" Exemplu: 21:34:17 pentru 09:34:17 PM
%X Reprezentarea preferențială a orei în baza setărilor locale, fără dată Exemplu: 03:59:16 sau 15:59:16
%z Deplasamentul fusului orar relativ la UTC sau abrevierea (depinde de sistemul de operare) Exemplu: -0500 sau EST pentru Eastern Time
%Z Deplasamentul/abrevierea fusului orar ce NU este dată de %z (depinde de sistemul de operare) Exemplu: -0500 sau EST pentru Eastern Time
Data și ora --- ---
%c Reprezentarea preferențială a datei și orei bazate pe setările locale Exemplu: Tue Feb 5 00:45:10 2009 pentru 4 februarie 2009, ora 12:45:10 AM
%D Echivalent cu "%m/%d/%y" Exemplu: 02/05/09 pentru February 5, 2009
%F Echivalent cu "%Y-%m-%d" (utilizat deseori la bazele de date) Exemplu: 2009-02-05 pentru February 5, 2009
%s Momentul de timp după Epoca Unix (la fel ca și în cazul funcției time()) Exemplu: 305815200 pentru September 10, 1979 08:40:00 AM
%x Reprezentarea preferențială a datei în baza setărilor locale, fără oră Exemplu: 02/05/09 pentru February 5, 2009
Diverse --- ---
%n Trecerea la linie nouă ("\n") ---
%t Caracterul Tab ("\t") ---
%% Caracterul "procent" ("%") ---

Lungimea maximă a acestui parametru este de 1023 caractere.

Avertizare

Contrar standardului ISO-9899:1999, Sun Solaris pune în corespondență zilei de Duminică numărul 1. Ca rezultat, %u poate să nu funcționeze după cum este descris în acest manual.

timestamp

Parametrul opţional timestamp este un integer şi este un moment de timp Unix şi are valoarea implicită a orei locale, dacă parametrul timestamp nu este indicat. Cu alte cuvinte, valoarea implicită este cea a funcţiei time().

Valorile întroarse

Întoarce un string formatat în corespundere cu parametrul format , utilizând timestamp -ul dat sau data şi ora locală, dacă nu este furnizat un timestamp. Denumirile lunilor şi a zilelor săptămânii şi alte string-uri dependente de limbă sunt în corespundere cu setările locale stabilite cu setlocale().

Erori/Excepţii

Fiecare apel al unei funcţii de dată/oră va genera o E_NOTICE dacă zona orară nu este validă şi/sau un mesaj E_STRICT sau E_WARNING dacă se utilizează setările sistemului sau variabila de mediu TZ. Vedeţi de asemenea date_default_timezone_set()

Istoria schimbărilor

Versiunea Descriere
5.1.0

Acum generează erori ale zonei orare de tip E_STRICT şi E_NOTICE.

Exemple

Acest exemplu va funcţiona dacă aveţi setările locale respective instalate în sistem.

Example #1 Exemple strftime()

<?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 Exemplu al numerelor săptămânilor conform standardului ISO 8601:1988

<?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   */

// Afişează: 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";

// Afişează: 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";

// Afişează: 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";

// Afişează: 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   */

// Afişează: 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";

// Afişează: 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";

// Afişează: 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";

// Afişează: 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";

?>

Note

Notă: %G şi %V, care se bazează pe numerele săptămânilor conform standardului ISO 8601:1988 pot oferi rezultate neaşteptate (dar corecte) dacă sistemul de numerotare nu este înţeles în detaliu. Vedeţi exemplele %V în această pagină a manualului.

Vedeţi de asemenea



strptime> <mktime
Last updated: Fri, 20 Nov 2009
 
add a note add a note User Contributed Notes
strftime
Chad
11-Nov-2009 01:50
On the Linux server I'm using, strftime() also accepts a "-" option to request no padding:

<?php
$ts
= strtotime("4 Nov 2009");
echo
strlen(strftime("%-e", $ts)), "\n"; // "1" (no padding)
echo strlen(strftime("%e", $ts)), "\n"; // "2" (space padded)
?>
szilagyigabor at yahoo dot com
02-Nov-2009 07:43
This is that worked with UTF-8 encoding on Linux server, with right accents:
<?php
setlocale
(LC_ALL, 'hu_HU.UTF8');
echo(
strftime('%Y. %B %d. %A'));
?>

Output is:
2009. november 02. hétfő

Also, this one can be used, if not utf-8 preferred:
<?php
setlocale
(LC_ALL, 'hu_HU.ISO8859-2');
?>

UTF-8 is not supported on windows platforms, so there the iconv workaround must be used:
<?php
setlocale
(LC_ALL, 'hun_hun');
echo(
iconv('ISO-8859-2', 'UTF-8',strftime('%Y. %B %d. %A')));
?>

The output is the same as before. Note that, the iconv first parameter is ISO-8859-2 not ISO-8859-1, because the locale is hungarian which uses 8859-2 codepage as default. It is needed for the right accents.

If you want use the same code for Windows and Linux platforms, the second one is the right option (the iconv trick), but the locale configuration must be different (Linux: hu_HU, windows: hun_hun), but in that case the UTF8 tag is not needed for the Linux config.
jjarsater at gmail dot com
20-May-2009 02:01
<?php
// Date string
$timestamp     =     strftime("%Y-%m-%d %H:%M:%S %Y");

// From this string ($timestamp) can we print
echo strftime("%a %d %b %H:%M:%S %Y", strtotime($timestamp))."<br/>";
echo
strftime("%a %d %b %H:%M", strtotime($timestamp))."<br/>";
echo
strftime("%Y-%m-%d %H:%M:%S", strtotime($timestamp))."<br/>";
echo
strftime("%Y-%m-%d %H:%M", strtotime($timestamp))."<br/>";
echo
strftime("%Y-%m-%d", strtotime($timestamp))."<br/>";
echo
strftime("%a %d %b %Y", strtotime($timestamp))."<br/>";

/*And it will output

Wed 20 May 15:53:40 2009
Wed 20 May 15:53
2009-05-20 15:53:40
2009-05-20 15:53
2009-05-20
Wed 20 May 2009

*/
?>
Michael Z.
18-May-2009 10:12
This is so simple it has to be found in one of all the comments on all those different time functions. But since I didn't find it, here it is: Use this to convert between different time formats:

<?PHP
if (!function_exists('convertTime')) {
 
/** Converts time strings from one format into another using
   *  PHP formats.
   *
   *  @param String $dformat Format to convert to
   *  @param String $sformat Format to convert from, e.g. format
   *      of $ts
   *  @param String $ts Time string to be converted
   *  @return String Supplied time translated to the format specified
   *    in $dformat
   */
 
function convertTime($dformat,$sformat,$ts) {
   
extract(strptime($ts,$sformat));
    return
strftime($dformat,mktime(
                                 
intval($tm_hour),
                                 
intval($tm_min),
                                 
intval($tm_sec),
                                 
intval($tm_mon)+1,
                                 
intval($tm_mday),
                                 
intval($tm_year)+1900
                               
));
  }
}

/*
 * And for the test....
 */
echo convertTime('%Y-%m-%d','%d.%m.%Y','27.11.2009');
?>

This should print "2009-27-11".

I did not put much effort in this code. The task also seems "too simple to be neccessary". But as I said, I didn't find anything to help me with this.

Cheers,

Michael Z
dapikk[at]gmail[dot]com
16-Mar-2009 10:21
I had a need to subtrackt an older time from current time to get the time between.
Example: If one has worked from 2009-03-16 11:33:54 to 2009-03-16 12:01:54 then he has worked X hours,minutes and seconds. I tried to find that X. And so - one solution would be:
<?php
$start_date
= strtotime("2009-03-16 11:33:54"); //start date from database - date("Y-m-d H:i:s") made as UNIX timestamp
$end_date = strtotime("2009-03-16 12:01:54"); //end date from database - date("Y-m-d H:i:s") made as UNIX timestamp
$ajavahe = $end_date - $start_date;
$time_between = gmstrftime('%Hh %Mm %Ss', $ajavahe); //gmstrftime() deals with different timezones correctly. (If in example you would be situated in Estonia and you would use strftime() you get wrong answer off by 2 hrs, because timezone is GMT+2 - with gmstrftime() comes right answer.)

echo 'You have worked: '.$time_between;
?>
Hope that this one makes someones life easier :D
lamb dot dan at gmail dot com
04-Dec-2008 06:37
<?php
/*
*    This function figures out what fiscal year a specified date is in.
*    $inputDate - the date you wish to find the fiscal year for. (12/4/08)
*    $fyStartDate - the month and day your fiscal year starts. (7/1)
*    $fyEndDate - the month and day your fiscal year ends. (6/30)
*    $fy - returns the correct fiscal year
*/
function calculateFiscalYearForDate($inputDate, $fyStart, $fyEnd){
   
$date = strtotime($inputDate);
   
$inputyear = strftime('%Y',$date);
       
   
$fystartdate = strtotime($fyStart.$inputyear);
   
$fyenddate = strtotime($fyEnd.$inputyear);

    if(
$date < $fyenddate){
       
$fy = intval($inputyear);
    }else{
       
$fy = intval(intval($inputyear) + 1);
    }
   
    return
$fy;
   
}

// my fiscal year starts on July,1 and ends on June 30, so...
echo calculateFiscalYearForDate("5/15/08","7/1","6/30");
// returns 2008

echo calculateFiscalYearForDate("12/1/08","7/1","6/30");
// returns 2009
?>
khaled dot ataia at gmail dot com
05-Nov-2008 02:24
for Arabic

<?php
setlocale
(LC_ALL,'ar');
echo
strftime('%A %d %B %Y');
?>
eljaunis at gmail dot com
22-Oct-2008 10:33
This is what worked in my case:

<?php
    setlocale
(LC_ALL, 'es_ES').': ';
    echo
iconv('ISO-8859-1', 'UTF-8', strftime('%A %d de %B de %Y', time()));
   
?>

it displays: miércoles 22 de octubre de 2008
buana95 at yahoo dot com
21-Aug-2008 03:51
For windows user:

If you unsuccessfully change date/time format to your locale country using xx_XX format, try using XXX format or ISO-639 country codes format.

See complete list for ISO-639 here: http://www.w3.org/WAI/ER/IG/ert/iso639.htm

For example:

<?php
setlocale
(LC_ALL, 'IND');
echo
strftime("Today in Indonesia is %A");
?>
Josue R.
09-Mar-2008 03:36
Here's a simple version for date formating i use between displaying in HTML and converting back to MYSQL format:

<?php
function format_date($original='', $format="%m/%d/%Y") {
   
$format = ($format=='date' ? "%m-%d-%Y" : $format);
   
$format = ($format=='datetime' ? "%m-%d-%Y %H:%M:%S" : $format);
   
$format = ($format=='mysql-date' ? "%Y-%m-%d" : $format);
   
$format = ($format=='mysql-datetime' ? "%Y-%m-%d %H:%M:%S" : $format);
    return (!empty(
$original) ? strftime($format, strtotime($original)) : "" );
}
?>

example (in HTML or webapp):
[grab from database]...
$dbase_stored_date = "2007-03-15";
$display_html_date = format_date($dbase_stored_date);
... displays as "03/15/2007"

example (saving form via on POST/GET):
$update_date = format_date($_POST['display_html_date'], 'mysql-date');
// converts back to '2007-03-15'
.... [your mysql update here]

Don't forget to sanitize your POST/GET's   =)
jerome dot place at free dot fr
07-Nov-2007 08:55
Here is a function to convert dates before 1970, very useful if you are still using php 4 (it is supported in php5) :

<?php
# convert a date to special format
# $date is like 2000-01-01 00:00:00
# $format : refer to strftime function
function convert_date($date,$format) {   
    if(
$date=='0000-00-00 00:00:00' OR $date=='0000-00-00' OR $date=='' OR $date==NULL) {
        return
'';
    }
    else {
       
$year=substr($date,0,4);
        if(
phpversion() < 5.0 AND $year < 1970) {
           
           
$new_date=substr_replace($date,'1980',0,4); # we replace the year by a year after 1970       
           
$new_format=eregi_replace('%a|%A|%u','',$format); # we remove days information from the format because they would be wrong
           
$new_date=strftime($new_format,strtotime($new_date)); # we convert the date
           
$new_date=eregi_replace('1980',$year,$new_date); # we put back the real year
           
return $new_date;
        }
        else {
            return
strftime($format,strtotime($date));
        }
    }
}
?>
nielsvan den berge at hotmail dot com
31-Aug-2007 01:43
A small function to get the first weekday of the month.
For example the first monday of the month, or the first friday, etc.

<?php 
 
/**
   *
   *  Gets the first weekday of that month and year
   *
   *  @param  int   The day of the week (0 = sunday, 1 = monday ... , 6 = saturday)
   *  @param  int   The month (if false use the current month)
   *  @param  int   The year (if false use the current year)
   *
   *  @return int   The timestamp of the first day of that month
   *
   **/ 
 
function get_first_day($day_number=1, $month=false, $year=false)
  {
   
$month  = ($month === false) ? strftime("%m"): $month;
   
$year   = ($year === false) ? strftime("%Y"): $year;
   
   
$first_day = 1 + ((7+$day_number - strftime("%w", mktime(0,0,0,$month, 1, $year)))%7);
 
    return
mktime(0,0,0,$month, $first_day, $year);
  }

// this will output the first wednesday of january 2007 (wed 03-01-2007)
echo strftime("%a %d-%m-%Y", get_first_day(3, 1, 2007));
?>
ma
28-Aug-2007 12:58
note, that for some languages you MUST set LC_ALL instead of LC_TIME.

note that you further have to explicitly define your output-encoding (default is ISO-8859-1 [which makes problems for some languages])!

at least i expirienced this behaviour on a german WinXP-PHP4 environment:

<?php

// does not work - gives question marks:
setlocale(LC_TIME, 'RUS'); // ISO Alpha-3 is supported by xp
echo strftime('%A', time());

?>

<?php

// DOES work:
header('Content-Type: text/html; charset=UTF-8'); // you could also use another charset here if iconv isn't installed on your system.

echo setlocale(LC_ALL, 'RUS').': ';
echo
iconv('windows-1251', 'UTF-8', strftime('%A', time()))."\n";

?>
ben dot holland at thirdlight dot com
21-Jun-2007 12:03
This little function allows you to provide a reasonably human readable string and convert to a timestamp - see example in comments below.

I find it far more useful than having to remember all the '%' modifiers. Am also well aware of its failings but it works in a lot of the real life situations I've come across.

<?php
function AmazingStringFromTime($str, $nTimestamp = null)
{
   
// This function reads a human readable string representation of dates. e.g.
    // DD MM YYYY => 01 07 1978
    // DDD D MMM YY => Mon 1 Jul 78
   
   
$arrPairs = array(
   
"DDDD"  => "%A",
   
"DDD"   => "%a",
   
"DD"    => "%d",
   
"D"     => "%e", // has leading space: ' 1', ' 2', etc for single digit days
   
"MMMM"  => "%B",
   
"MMM"   => "%b",
   
"MM"    => "%m",
   
"YYYY"  => "%Y",
   
"YY"    => "%y",
   
"HH"    => "%H",
   
"hh"    => "%I",
   
"mm"    => "%M",
   
"ss"    => "%S",
    );
   
   
$str = str_replace(array_keys($arrPairs), array_values($arrPairs), $str);
    return
strftime($str, $nTimestamp);
}
?>
th1nk3r at gmail dot DELETETHIS dot com
20-Jan-2007 05:35
Function strftime() use the locales installed in your system (linux).

If you are like me and only leave in the system the locales you use normally (en_US and your own language locale, like es_ES), you'll only be able to use the locales installed. If your application is translated to other languages, you need these locales too.

The name of the locale in your system is important too. This can be a problem when you want to distribute the app.

If you have this locales in your system:
en_US/ISO-8859-1
en_US.UTF-8/UTF-8
es_ES/ISO-8859-1
es_ES@euro/ISO-8859-15
es_ES.UTF-8/UTF-8
es_ES@euro/UTF-8

and use setlocale('es_ES'), the result will use the iso-8859-1 charset even if you have all your system, files and configuration options in UTF-8. To receive content in UTF-8, in this example, you need to use setlocale('es_ES.UTF-8') or setlocale('es_ES.UTF-8@UTF-8').

The definition of locales can change from one system to another, and so the charset from the results.
denis at spiralsolutions dot com
02-Nov-2006 08:07
(in addition to Andy's post)
To get a RFC 2822 date (used in RSS) of the current local time :

echo strftime ("%a, %d %b %Y %H:%M:%S %z") ;

Note: option %z / %Z - work different on Windows platform, for example
output of this code line can be:
Thu, 02 Nov 2006 09:54:59 Jerusalem Standard Time (on Windows)
Thu, 02 Nov 2006 09:54:59 +0200                   (on Linux)

[red. It is much smarter to use date(DATE_RSS); here]
Jon Keating
18-Jan-2006 01:49
Under windows if you are using Japanese version, you must use the following code:

setlocale(LC_ALL, "Japanese_Japan.20932") for EUC
setlocale(LC_ALL, "Japanese_Japan.932") for SJIS

I found the following page that helped me with this issue:
http://moodle.org/mod/forum/discuss.php?d=8329
jw at jwscripts dot com
29-May-2005 01:32
The following function implements the conversion specifiers which are not supported on Win32 platforms:

(Note: the specifiers %V, %G and %g can be implemented using other functions described in this section)

<?php

function strftime_win32($format, $ts = null) {
    if (!
$ts) $ts = time();

   
$mapping = array(
       
'%C' => sprintf("%02d", date("Y", $ts) / 100),
       
'%D' => '%m/%d/%y',
       
'%e' => sprintf("%' 2d", date("j", $ts)),
       
'%h' => '%b',
       
'%n' => "\n",
       
'%r' => date("h:i:s", $ts) . " %p",
       
'%R' => date("H:i", $ts),
       
'%t' => "\t",
       
'%T' => '%H:%M:%S',
       
'%u' => ($w = date("w", $ts)) ? $w : 7
   
);
   
$format = str_replace(
       
array_keys($mapping),
       
array_values($mapping),
       
$format
   
);

    return
strftime($format, $ts);
}

?>
neo at gothic-chat d0t de
25-Jun-2004 06:27
To get a RFC 850 date (used in HTTP) of the current time:

gmstrftime ("%A %d-%b-%y %T %Z", time ());

This will get for example:
Friday 25-Jun-04 03:30:23 GMT

Please note that times in HTTP-headers _must_ be GMT, so use gmstrftime() instead of strftime().
vminarik at ips-ag dot cz
10-Sep-2001 01:02
Note that setting LC_TIME is not enough for some locales under Windows, e.g. Czech, because there are some characters not contained in default (US) character set like '�' (c with hook), '�' (r with hook).


If you run Apache as regular application and have set your locale to Czech (ControlPanel/RegionalOptions), there is no problem and 'September' is correctly translated as 'z���', 'Thursday' as '�tvrtek'.
But if you run Apache as service, you get 'z�r�', and 'ctvrtek'.
To get things work as you expect you must set LC_CTYPE beside LC_TIME, or set LC_ALL.

<?php
  $locale
= 'Czech_Czech.1250';
 
$res = setlocale( 'LC_CTYPE', $locale); //important
 
$res = setlocale( 'LC_TIME', $locale);
  echo
strftime( '%A %m. %B %Y', mktime( 0,0,0,9,6,2001));
?>
zmajeed at cup dot hp dot com
22-Jul-1999 10:14
Locale names are OS dependent. HP-UX 11.0, for example, has three
German locales, de_DE.roman8, de_DE.iso88591, and
de_DE.iso885915@euro.
The command locale -a will display all available locales on a system.

So on HP-UX, to get German dates:

<?php
setlocale
("LC_TIME", "de_DE.roman8");
print(
strftime("%A\n"));
?>

strptime> <mktime
Last updated: Fri, 20 Nov 2009
 
 
show source | credits | sitemap | contact | advertising | mirror sites