NSDateFormatter

Easy Skeezy Date Formatting for Swift and Objective-C

...

Monday, Aug 29, 2016
EEEE, MMM d, yyyy
08/29/2016
MM/dd/yyyy
08-29-2016 17:55
MM-dd-yyyy HH:mm
Aug 29, 17:55 PM
MMM d, H:mm a
August 2016
MMMM yyyy
Aug 29, 2016
MMM d, yyyy
Mon, 29 Aug 2016 17:55:46 +0000
E, d MMM yyyy HH:mm:ss Z
2016-08-29T17:55:46+0000
yyyy-MM-dd'T'HH:mm:ssZ
29.08.16
dd.MM.yy

The following table's sample column are mostly based on the time December 14th, 2008 4:35 PM UTC.

Characters Example Description
Year
y 2008 Year, no padding
yy 08 Year, two digits (padding with a zero if necessary)
yyyy 2008 Year, minimum of four digits (padding with zeros if necessary)
Quarter
Q 4 The quarter of the year. Use QQ if you want zero padding.
QQQ Q4 Quarter including "Q"
QQQQ 4th quarter Quarter spelled out
Month
M 12 The numeric month of the year. A single M will use '1' for January.
MM 12 The numeric month of the year. A double M will use '01' for January.
MMM Dec The shorthand name of the month
MMMM December Full name of the month
MMMMM D Narrow name of the month
Day
d 14 The day of the month. A single d will use 1 for January 1st.
dd 14 The day of the month. A double d will use 01 for January 1st.
F 3rd Tuesday in December The day of week in the month
E Tues The day of week in the month
EEEE Tuesday The full name of the day
EEEEE T The narrow day of week
Hour
h 4 The 12-hour hour.
hh 04 The 12-hour hour padding with a zero if there is only 1 digit
H 16 The 24-hour hour.
HH 16 The 24-hour hour padding with a zero if there is only 1 digit.
a PM AM / PM for 12-hour time formats
Minute
m 35 The minute, with no padding for zeroes.
mm 35 The minute with zero padding.
Second
s 8 The seconds, with no padding for zeroes.
ss 08 The seconds with zero padding.
Time Zone
zzz CST The 3 letter name of the time zone. Falls back to GMT-08:00 (hour offset) if the name is not known.
zzzz Central Standard Time The expanded time zone name, falls back to GMT-08:00 (hour offset) if name is not known.
zzzz CST-06:00 Time zone with abbreviation and offset
Z -0600 RFC 822 GMT format. Can also match a literal Z for Zulu (UTC) time.
ZZZZZ -06:00 ISO 8601 time zone format

About this Site

nsdateformatter.com is written with Swift 3, as a means to learn open-source Swift, the Swift Package Manager, and deploying to linux. It uses the Frank web application framework, Curassow for an application server, all behind nginx, hosted on a Digital Ocean linux VPS.

The site is open source, so if you want to fix a bug or submit an enhancement, feel free to submit a pull request.

About the Author

avatar Ben Scheirman is a developer from Houston, TX. He is the founder of NSScreencast, where you can find over 200 screencasts on iOS development topics.

Curious? Check out this free screencast on Parsing and Formatting Dates.

You can find Ben on Twitter or his blog.