blog archive

Exploring NSDateFormatter using F-Script as a REPL


(here be preface)

Let's start by instantiating a formatter and a date.

> fmt := NSDateFormatter new.

> fmt
<NSDateFormatter: 0x2004cec80>

> now := NSDate date.

> now
2010-04-25 18:03:26 +0900

Note that assignment is :=, not =, and no angled brackets around method calls. Also, a sentence ends in a period, not a semicolon.

OK, what does the virgin formatter output when we feed it a date?

> fmt stringFromDate:now
''

Hmm, after consulting the Xcode Developer Documentation, it seems that we need to set a format string to get a non-empty result. There are also shortcut methods provided to easily set the formats for the date part and the time part.

The argument to these methods is a constant, which we have easy access to in F-Script.

> NSDateFormatterNoStyle
0

> fmt setDateStyle:NSDateFormatterMediumStyle

> fmt dateFormat
'MMM d, yyyy'

> fmt stringFromDate:now
'Apr 25, 2010'

There, the date. Let's try setting the time part format.

> fmt setTimeStyle:NSDateFormatterMediumStyle

> fmt dateFormat
'MMM d, yyyy h:mm:ss a'

> fmt stringFromDate:now
'Apr 25, 2010 6:03:26 PM'

With #setDateFormat:, we have more control over the formatting. You can even include arbitrary string. (Which I found out after reading the date format patterns specification adopted by NSDateFormatter.)

> fmt setDateFormat:'''Year''YYYY'

> fmt dateFormat
''Year'YYYY'

> fmt stringFromDate:now
'Year2010'