Comprehensive Cheat Sheet for Date and Time Format Options in PHP

Mohasin Hossain
3 min readOct 21, 2024

--

Here’s a comprehensive cheat sheet for date and time format options in PHP, which are commonly used in many programming contexts for formatting dates and times. This cheat sheet includes options for days, months, years, hours, minutes, seconds, and more:

Photo by Ben Griffiths on Unsplash

Day

  • d: Day of the month, 2 digits with leading zeros (01 to 31)
  • D: A textual representation of a day, three letters (Mon to Sun)
  • j: Day of the month without leading zeros (1 to 31)
  • l (lowercase 'L'): A full textual representation of the day of the week (Sunday to Saturday)
  • N: ISO-8601 numeric representation of the day of the week (1 for Monday, 7 for Sunday)
  • S: English ordinal suffix for the day of the month, 2 characters (st, nd, rd, th)
  • w: Numeric representation of the day of the week (0 for Sunday, 6 for Saturday)
  • z: The day of the year (0 to 365)

Week

  • W: ISO-8601 week number of year, weeks starting on Monday (01 to 53)

Month

  • F: A full textual representation of a month (January to December)
  • m: Numeric representation of a month, with leading zeros (01 to 12)
  • M: A short textual representation of a month, three letters (Jan to Dec)
  • n: Numeric representation of a month, without leading zeros (1 to 12)
  • t: Number of days in the given month (28 to 31)

Year

  • L: Whether it's a leap year (1 if it is a leap year, 0 otherwise)
  • o: ISO-8601 week-numbering year. This has the same value as Y, except that if the ISO week number (W) belongs to the previous or next year, that year is used instead.
  • Y: A full numeric representation of a year, 4 digits (e.g., 2024)
  • y: A two-digit representation of a year (e.g., 24 for 2024)

Time

  • a: Lowercase Ante meridiem and Post meridiem (am or pm)
  • A: Uppercase Ante meridiem and Post meridiem (AM or PM)
  • B: Swatch Internet time (000 to 999)
  • g: 12-hour format of an hour without leading zeros (1 to 12)
  • G: 24-hour format of an hour without leading zeros (0 to 23)
  • h: 12-hour format of an hour with leading zeros (01 to 12)
  • H: 24-hour format of an hour with leading zeros (00 to 23)
  • i: Minutes with leading zeros (00 to 59)
  • s: Seconds with leading zeros (00 to 59)
  • u: Microseconds (up to six digits)

Timezone

  • e: Timezone identifier (e.g., UTC, GMT, Atlantic/Azores)
  • I: Whether or not the date is in daylight saving time (1 if DST, 0 otherwise)
  • O: Difference to Greenwich time (GMT) in hours (e.g., +0200)
  • P: Difference to Greenwich time (GMT) with colon between hours and minutes (e.g., +02:00)
  • T: Timezone abbreviation (e.g., EST, MDT)
  • Z: Timezone offset in seconds. The offset for timezones west of UTC is negative, and for those east of UTC is positive (e.g., -43200 to 50400)

Full Date/Time

  • c: ISO 8601 date (e.g., 2024-07-27T15:45:00+02:00)
  • r: RFC 2822 formatted date (e.g., Sat, 27 Jul 2024 15:45:00 +0200)
  • U: Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)

Example

Combining these formats, you can create various custom date and time strings. Here are a few examples:

  • Full date and time (ISO 8601): Y-m-d\TH:i:sP
  • Example: 2024-07-27T15:45:00+02:00
  • Short date: d/m/Y
  • Example: 27/07/2024
  • Long date: l, F j, Y
  • Example: Saturday, July 27, 2024
  • Time (12-hour with AM/PM): h:i A
  • Example: 03:45 PM
  • Time (24-hour): H:i
  • Example: 15:45

Hope you found this helpful!

--

--

Mohasin Hossain

Senior Software Engineer | Mentor @ADPList | Backend focused | PHP, JavaScript, Laravel, Vue.js, Nuxt.js, MySQL, TDD, CI/CD, Docker, Linux