PHP:s date() Funktionen är ett av de mest kraftfulla och vanligaste verktygen för att hantera formatering av datum och tid i webbapplikationer. Oavsett om du bygger en blogg, en e-handelsplattform eller en instrumentpanel är det avgörande att visa datum på ett användarvänligt sätt. I den här omfattande guiden,
Vi ska gå på djupet med date() funktionen, utforska dess syntax, formatangivelser, exempel från verkligheten, bästa praxis och vanliga fallgropar.
Vad är PHP-funktionen Date()?
De date() Funktionen i PHP formaterar ett lokalt datum och en lokal tid enligt en angiven formatsträng. Den returnerar en sträng som representerar det formaterade datumet och den formaterade tiden.
Grundläggande syntax
php
string date(string $format, ?int $timestamp = null)
$-format: En sträng som innehåller formatangivelser (t.ex.,Y,m,d).$-tidsstämpel: Valfri Unix-tidsstämpel. Om den utelämnas används den aktuella tiden.
Anmärkning: Från och med PHP 8.0+ är den andra parametern nullbar (?int).
Viktiga specifikatorer för datumformat i PHP
Här är en översiktstabell över de vanligaste formattecknen:
| Specificerare | Beskrivning | Exempel på utdata |
Y | 4-siffrigt år | 2026 |
y | 2-siffrigt år | 25 |
m | Månad (01–12) | 11 |
n | Månad utan inledande nollor (1–12) | 11 |
F | Hela månadsnamnet | november |
M | Kort månadsnamn (3 bokstäver) | nov |
d | Dag i månaden med inledande nollor | 17 |
j | Dag utan inledande nollor | 17 |
l | Fullständigt namn på veckodag | Måndag |
D | Kort vardag (3 bokstäver) | Mån |
H | 24-timmarsformat (00–23) | 11 |
h | 12-timmarsformat (01–12) | 11 |
i | Minuter med inledande nollor | 37 |
s | Sekunder med inledande nollor | 45 |
A | Versaler AM/PM | AM |
a | Små bokstäver i am/pm | på morgonen |
T | Förkortning för tidszon | IST |
c | ISO 8601-format | 2026-11-17T11:37:45+05:30 |
r | RFC 2822-format | Mån, 17 nov 2026 11:37:45 +0530 |
Grundläggande exempel på datumformat i PHP
1. Aktuellt datum och tid
php
echo datum(‘Å-m-d H:i:s’);
// Utdata: 2026-11-17 11:37:452. Läsbart format
php
echo datum(‘l, F j, Y \a\t g:i A’);
// Utdata: måndagen den 17 november 2026 kl. 11:37Användning \ för att ersätta tecken som på så att de visas bokstavligen.
3. Kort datum
php
echo date('d/m/Y');
// Utdata: 17/11/20264. Endast tid
php
echo date('h:i A');
// Utdata: 11:37Arbeta med tidsstämplar
Du kan formatera vilken Unix-tidsstämpel som helst:
php
$timestamp = strtotime('2026-01-01 00:00:00');
echo date('Y-m-d', $timestamp);
// Utdata: 2026-01-01Kombinera med strtotime()
php
echo date('F j, Y', strtotime('+7 dagar'));
// Utdata: 24 november 2026Hantering av tidszoner (Viktigt!)
Som standard, date() använder serverns standardtidszon. Ange alltid tidszonen uttryckligen:
php
date_default_timezone_set('Asia/Kolkata'); // IST
echo date('Å-m-d H:i:s T');
// Utdata: 2026-11-17 11:37:45 ISTBästa praxis: Ange tidszonen högst upp i din konfigurationsfil eller i startfilen.
Praktiska användningsexempel för datumformat i PHP
1. Datum för blogginlägg
php
$post_date = '2026-11-10 14:30:00';
echo date('M j, Y', strtotime($post_date));
// Utdata: 10 nov 20262. Relativ tid (“för 2 timmar sedan”)
php
funktion timeAgo($timestamp) {
$diff = time() - $timestamp;
if ($diff < 60) return "för $diff sekunder sedan";
if ($diff < 3600) return round($diff/60) . " minuter sedan";
if ($diff < 86400) return round($diff/3600) . " timmar sedan";
return date('M j', $timestamp);
}
echo timeAgo(strtotime('2026-11-17 09:00:00'));
// Utmatning: för 2 timmar sedan3. Nedräkning till evenemanget
php
$event = strtotime('2026-12-25 00:00:00');
$now = time();
$days_left = floor(($event - $now) / 86400);
echo "Det är $days_left dagar kvar till jul!";
// Utdata: Det är 38 dagar kvar till jul!Vanliga fallgropar och hur man undviker dem
| Fråga | Lösning |
| Fel tidszon | Använd alltid date_default_timezone_set() |
Y2K-liknande buggar med y | Föredrar Y för helåret |
| Förvirring kring inledande nollor | Användning j istället för d om du inte vill ha nollor |
| Språkinställningsproblem | Användning setlocale() + strftime() för lokaliserade namn |
| Kommer det att fasas ut i framtiden? | Nej! Men tänk på följande Datum och tid för komplexa operationer |
Proffstips
1. Använd Datum och tid för avancerade behov
2. php
$dt = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
3. echo $dt->format('Å-m-d H:i:s');
4. Cachelagring av formaterade datum
Undvik att ringa date() i loopar för bättre prestanda.
5. Kontrollera tidsstämplarna i indata
6. php
if ($timestamp === false) {
$timestamp = time();
7. }
8. Internationalisering
9. php
setlocale(LC_TIME, 'hi_IN');
10. echo strftime('%e %B %Y'); // Datum på hindi
Bonus: Datumformat i en rad
php// ISOdate('c');
// Amerikanskt formatdate('m/d/Y h:i A');
// EU-formatdate('d.m.Y H:i');
Slutsats
Mastering date() handlar om att förstå dess formatangivelser, hantering av tidszoner, och integration med strtotime(). Medan Datum och tid ger mer prestanda för komplexa scenarier, date() är fortfarande lättviktig, snabb och perfekt för 90% olika användningsfall. Carmatec, ett ledande PHP utvecklingsföretag, utnyttjar för att tillhandahålla ren, effektiv och tillförlitlig tidsbaserad funktionalitet.