import Foundation
// Current date/time
let now = Date()
// Function to format using a pattern
func format(_ pattern: String) -> String {
let df = DateFormatter()
df.locale = Locale(identifier: "en_US_POSIX")
df.dateFormat = pattern
return df.string(from: now)
}
print("Original Date: \(now)\n")
// --- YEAR PATTERNS ---
print("yyyy (4-digit year): \(format("yyyy"))")
print("yy (2-digit year): \(format("yy"))")
// --- MONTH PATTERNS ---
print("MM (2-digit month): \(format("MM"))")
print("M (1-2 digit month): \(format("M"))")
print("MMM (short month): \(format("MMM"))")
print("MMMM (full month): \(format("MMMM"))")
// --- DAY PATTERNS ---
print("dd (2-digit day): \(format("dd"))")
print("d (1-2 digit day): \(format("d"))")
// --- WEEKDAY PATTERNS ---
print("E (short weekday): \(format("E"))")
print("EEEE (full weekday): \(format("EEEE"))")
// --- TIME PATTERNS ---
print("HH:mm:ss (24-hour): \(format("HH:mm:ss"))")
print("hh:mm:ss a (12-hour): \(format("hh:mm:ss a"))")
// --- TIME ZONE PATTERNS ---
print("zzz (short timezone): \(format("zzz"))")
print("zzzz (full timezone): \(format("zzzz"))")
print("Z (RFC-822 offset): \(format("Z"))")
print("XXXXX (ISO8601 offset): \(format("XXXXX"))")
// --- FULL COMPOSITE FORMATS ---
print("yyyy-MM-dd: \(format("yyyy-MM-dd"))")
print("dd/MM/yyyy: \(format("dd/MM/yyyy"))")
print("MM-dd-yyyy HH:mm: \(format("MM-dd-yyyy HH:mm"))")
print("EEEE, MMM d, yyyy: \(format("EEEE, MMM d, yyyy"))")
print("yyyy-MM-dd'T'HH:mm:ssZ: \(format("yyyy-MM-dd'T'HH:mm:ssZ"))")
// --- ISO8601 FORMATTER (built-in) ---
let iso = ISO8601DateFormatter()
iso.formatOptions = [.withInternetDateTime]
print("ISO8601: \(iso.string(from: now))")
/*
run:
Original Date: 2026-05-21 05:10:36 +0000
yyyy (4-digit year): 2026
yy (2-digit year): 26
MM (2-digit month): 05
M (1-2 digit month): 5
MMM (short month): May
MMMM (full month): May
dd (2-digit day): 21
d (1-2 digit day): 21
E (short weekday): Thu
EEEE (full weekday): Thursday
HH:mm:ss (24-hour): 05:10:36
hh:mm:ss a (12-hour): 05:10:36 AM
zzz (short timezone): UTC
zzzz (full timezone): Coordinated Universal Time
Z (RFC-822 offset): +0000
XXXXX (ISO8601 offset): Z
yyyy-MM-dd: 2026-05-21
dd/MM/yyyy: 21/05/2026
MM-dd-yyyy HH:mm: 05-21-2026 05:10
EEEE, MMM d, yyyy: Thursday, May 21, 2026
yyyy-MM-dd'T'HH:mm:ssZ: 2026-05-21T05:10:36+0000
ISO8601: 2026-05-21T05:10:36Z
*/