Format Date and Time in JavaScript

Format dates in various formats

BeginnerDate/Time ProgramsExample 2 of 10
format-date-and-time.js
1// Method 1: Basic formatting
2function formatDate(date) {
3 const year = date.getFullYear();
4 const month = String(date.getMonth() + 1).padStart(2, '0');
5 const day = String(date.getDate()).padStart(2, '0');
6 return `${year}-${month}-${day}`;
7}
8
9console.log('YYYY-MM-DD:', formatDate(new Date()));
10
11// Method 2: Multiple formats
12function formatDateMultiple(date, format) {
13 const year = date.getFullYear();
14 const month = String(date.getMonth() + 1).padStart(2, '0');
15 const day = String(date.getDate()).padStart(2, '0');
16 const hours = String(date.getHours()).padStart(2, '0');
17 const minutes = String(date.getMinutes()).padStart(2, '0');
18 const seconds = String(date.getSeconds()).padStart(2, '0');
19
20 const formats = {
21 'YYYY-MM-DD': `${year}-${month}-${day}`,
22 'DD/MM/YYYY': `${day}/${month}/${year}`,
23 'MM/DD/YYYY': `${month}/${day}/${year}`,
24 'YYYY-MM-DD HH:mm:ss': `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`,
25 'DD MMM YYYY': `${day} ${getMonthName(date.getMonth())} ${year}`
26 };
27
28 return formats[format] || formatDate(date);
29}
30
31function getMonthName(month) {
32 const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
33 return months[month];
34}
35
36console.log('DD/MM/YYYY:', formatDateMultiple(new Date(), 'DD/MM/YYYY'));
37console.log('DD MMM YYYY:', formatDateMultiple(new Date(), 'DD MMM YYYY'));
38
39// Method 3: Relative time
40function getRelativeTime(date) {
41 const now = new Date();
42 const diff = now - date;
43 const seconds = Math.floor(diff / 1000);
44 const minutes = Math.floor(seconds / 60);
45 const hours = Math.floor(minutes / 60);
46 const days = Math.floor(hours / 24);
47
48 if (seconds < 60) return `${seconds} seconds ago`;
49 if (minutes < 60) return `${minutes} minutes ago`;
50 if (hours < 24) return `${hours} hours ago`;
51 if (days < 7) return `${days} days ago`;
52 return formatDate(date);
53}
54
55console.log('Relative:', getRelativeTime(new Date(Date.now() - 3600000)));
56
57// Method 4: Locale formatting
58const date = new Date();
59console.log('en-US:', date.toLocaleDateString('en-US'));
60console.log('en-GB:', date.toLocaleDateString('en-GB'));
61console.log('de-DE:', date.toLocaleDateString('de-DE'));
62console.log('ja-JP:', date.toLocaleDateString('ja-JP'));
63
64// Method 5: Custom format with Intl
65const formatter = new Intl.DateTimeFormat('en-US', {
66 year: 'numeric',
67 month: 'long',
68 day: 'numeric',
69 weekday: 'long'
70});
71
72console.log('Formatted:', formatter.format(new Date()));

Output

YYYY-MM-DD: 2024-01-15
DD/MM/YYYY: 15/01/2024
DD MMM YYYY: 15 Jan 2024
Relative: 1 hours ago
en-US: 1/15/2024
en-GB: 15/01/2024
de-DE: 15.1.2024
ja-JP: 2024/1/15
Formatted: Monday, January 15, 2024

What's going on

Date formatting displays dates in readable formats.

Format Patterns

YYYY-MM-DD: ISO format
DD/MM/YYYY: European format
MM/DD/YYYY: US format
Custom formats

Locale Formatting

toLocaleDateString: Local format
Intl.DateTimeFormat: Advanced
Supports multiple locales

Relative Time

"X minutes ago"
"X hours ago"
"X days ago"
Human-readable

Best Practices

Use Intl for locales
Handle timezones
Format consistently
Consider user locale