PHP Date Formatting: Complete Developer Guide
Working with dates in PHP is a fundamental skill every developer needs to master. Whether you’re building a blog, an e-commerce platform, or a complex web application, understanding how to format dates correctly is essential for creating user-friendly interfaces and managing temporal data effectively.
Understanding PHP Date Format Characters
PHP provides a powerful and flexible date formatting system through the date() function and the DateTime class. The format is controlled by a string of special characters, each representing a different component of the date or time.
Day Formatters
| Character | Description | Example |
|---|---|---|
d |
Day of month with leading zero (01-31) | 04 |
j |
Day of month without leading zero (1-31) | 4 |
D |
Abbreviated day name (3 letters) | Mon |
l |
Full day name | Monday |
N |
ISO-8601 day number (1=Monday, 7=Sunday) | 1 |
w |
Day of week (0=Sunday, 6=Saturday) | 1 |
z |
Day of the year (0-365) | 276 |
S |
English ordinal suffix (st, nd, rd, th) | th |
Month Formatters
| Character | Description | Example |
|---|---|---|
m |
Month with leading zero (01-12) | 10 |
n |
Month without leading zero (1-12) | 10 |
M |
Abbreviated month name (3 letters) | Oct |
F |
Full month name | October |
t |
Number of days in the month | 31 |
Year Formatters
| Character | Description | Example |
|---|---|---|
Y |
Four-digit year | 2025 |
y |
Two-digit year | 25 |
L |
Leap year (1=yes, 0=no) | 0 |
Time Formatters
| Character | Description | Example |
|---|---|---|
H |
24-hour format with leading zero (00-23) | 14 |
h |
12-hour format with leading zero (01-12) | 02 |
G |
24-hour format without leading zero (0-23) | 14 |
g |
12-hour format without leading zero (1-12) | 2 |
i |
Minutes with leading zero (00-59) | 05 |
s |
Seconds with leading zero (00-59) | 30 |
u |
Microseconds | 654321 |
A |
Uppercase AM/PM | PM |
a |
Lowercase am/pm | pm |
Common Date Format Patterns
Here are the most commonly used date format patterns you’ll encounter in real-world applications:
ISO 8601 Standard
// 2025-10-04
echo date('Y-m-d');
// 2025-10-04T14:30:00
echo date('Y-m-d\TH:i:s');
Human-Readable Formats
// Monday, October 4, 2025
echo date('l, F j, Y');
// Oct 4, 2025
echo date('M j, Y');
// Oct 4 '25
echo date('M j \\'y');
// Monday 4 October 2025
echo date('l j F Y');
European Style
// 04/10/2025
echo date('d/m/Y');
// 04.10.2025
echo date('d.m.Y');
American Style
// 10/04/2025
echo date('m/d/Y');
// October 4, 2025
echo date('F j, Y');
Time Formats
// 14:30:05
echo date('H:i:s');
// 2:30 PM
echo date('g:i A');
Using DateTime Class (Modern Approach)
The DateTime class provides a more object-oriented and robust way to work with dates:
$date = new DateTime('2025-10-04');
// Format the date
echo $date->format('l j F Y');
// Output: Monday 4 October 2025
// Modify dates
$date->modify('+7 days');
echo $date->format('Y-m-d');
// Output: 2025-10-11
// Set timezone
$date->setTimezone(new DateTimeZone('Europe/Rome'));
echo $date->format('Y-m-d H:i:s T');
Practical Examples
Display Current Date and Time
echo date('l, F j, Y \a\t g:i A');
// Monday, October 4, 2025 at 2:30 PM
Format Database Timestamps
$timestamp = strtotime('2025-10-04 14:30:00');
echo date('M j, Y', $timestamp);
// Oct 4, 2025
Create Custom Format
// Create: 4th of October, 2025
echo date('jS \of F, Y');
// 4th of October, 2025
Multilingual Dates
For international applications, use IntlDateFormatter:
$formatter = new IntlDateFormatter(
'it_IT',
IntlDateFormatter::FULL,
IntlDateFormatter::NONE
);
echo $formatter->format(new DateTime());
// lunedì 4 ottobre 2025
Best Practices
- Use DateTime class for complex operations: It’s more reliable and easier to work with than procedural functions.
- Always consider timezone: Set the default timezone or use timezone-aware DateTime objects.
- Store dates in ISO 8601 format: Use
Y-m-d H:i:sin databases for consistency. - Validate user input: Always validate and sanitize date inputs before processing.
- Use immutable dates when needed: Consider
DateTimeImmutablefor safer date manipulation.
Quick Reference Table
| Format Output | Format String |
|---|---|
| Monday 4 October 2025 | l j F Y |
| Mon 4 Oct 2025 | D j M Y |
| Oct 4 ’25 | M j \\'y |
| 04/10/2025 | d/m/Y |
| 2025-10-04 | Y-m-d |
| October 4, 2025 | F j, Y |
| 4th October 2025 | jS F Y |
| 14:30:05 | H:i:s |
| 2:30 PM | g:i A |
Conclusion
Mastering PHP date formatting is crucial for creating professional web applications. Whether you’re using the traditional date() function or the modern DateTime class, understanding these format characters will help you display dates in any format your application requires.
Remember to always consider your audience’s locale and timezone requirements when formatting dates for display.





