How about 15 bytes? (x86, month in ecx, result in eax)
// 28 + ((0x3bbeecc>>m>>m)&3);
b8 cc ee bb 03 mov eax,0x3bbeecc
d3 f8 sar eax,cl
d3 f8 sar eax,cl
83 e0 03 and eax,0x3
83 c0 1c add eax,0x1c