First column:   year   month .   Number of months
Repeat day codes every columns.   Entry padding em.  

202320232023202320232023
JanFebMarAprMayJun
      
SaSa1Sa
Su1Su2Su
      
Mo2Mo31Mo
Tu3Tu42Tu
We411We53We
Th522Th641Th
Fr633Fr752Fr
Sa744Sa863Sa
Su855Su974Su
      
Mo966Mo1085Mo
Tu1077Tu1196Tu
We1188We12107We
Th1299Th13118Th
Fr131010Fr14129Fr
Sa141111Sa151310Sa
Su151212Su161411Su
      
Mo161313Mo171512Mo
Tu171414Tu181613Tu
We181515We191714We
Th191616Th201815Th
Fr201717Fr211916Fr
Sa211818Sa222017Sa
Su221919Su232118Su
      
Mo232020Mo242219Mo
Tu242121Tu252320Tu
We252222We262421We
Th262323Th272522Th
Fr272424Fr282623Fr
Sa282525Sa292724Sa
Su292626Su302825Su
      
Mo302727Mo2926Mo
Tu312828Tu3027Tu
We29We3128We
Th30Th29Th
Fr31Fr30Fr

35 rows

Notes on curious non-bug on my home machine:
with date_default_timezone_set('UTC') - be patient
without that declaration