Fucking Go Date Format

Because I've used strftime a million times before

%a
The abbreviated weekday name ("Sun")
%A
The full weekday name ("Sunday")
%b
The abbreviated month name ("Jan")
%B
The full month name ("January")
%d
Day of the month (01..31)
%e
Day of the month with a leading blank instead of zero ( 1..31)
%m
Month of the year (01..12)
%y
Year without a century (00..99)
%Y
Year with century
%H
Hour of the day, 24-hour clock (00..23)
%I
Hour of the day, 12-hour clock (01..12)
%l
Hour of the day, 12-hour clock without a leading zero (1..12)
%M
Minute of the hour (00..59)
%P
Meridian indicator ("am" or "pm")
%p
Meridian indicator ("AM" or "PM")
%S
Second of the minute (00..60)
%z
Time zone hour and minute offset from UTC
%Z
Time zone name
%%
Literal "%" character

Codes not natively supported in Go

%j
Day of the year (001..366)
%U
Week number of the current year, starting with the first Sunday as the first day of the first week (00..53)
%W
Week number of the current year, starting with the first Monday as the first day of the first week (00..53)
%w
Day of the week (Sunday is 0, 0..6)
%X
Preferred representation for the time alone, no date
%x
Preferred representation for the date alone, no time
%c
The preferred local date and time representation

But...why?

Having used the strftime in many other languages (shell, ruby, python, c), Go's date formatting was frustratingly different — frustrating mostly because I'm too lazy to learn a new date format. I wanted to build this site to let me be lazy and continue writing strftime format strings in Go.

Ironically, I can now write Go date format strings now after building this site. You win this time Russ Cox.

If you really need strftime functionality, there are a few open source alternatives. (Courtesy of Andrew Gerrand). Or just use this bash script.