Material-UIのTextFieldをtype="date"にした際のdefaultValueに指定する日付のフォーマットについて備忘録
<p>material-uiの<code>TextFiled</code>という<a class="keyword" href="http://d.hatena.ne.jp/keyword/API">API</a>の中で、<code>type="date"</code>のようにタイプを指定することでDate pickerのように使用することができる。</p>
<p><a href="https://material-ui.com/components/pickers/#native-pickers">Date picker, Time picker React components - Material-UI</a></p>
<p>その際、デフォルトの日付を<code>defaultValue</code>というオプションで設定できるが、この部分で少し詰まったので備忘録として残す。</p>
<h4>ダメだった例</h4>
<pre class="code lang-javascript" data-lang="javascript" data-unlink>
<span class="synComment">// 年、月、日の区切りがスラッシュになっているとdefaultValueとして認識されない</span>
<span class="synStatement">const</span> today = dayjs().format(<span class="synConstant">'YYYY/MM/DD'</span>)
<TextField
label=<span class="synConstant">"testDay"</span>
type=<span class="synConstant">"date"</span>
defaultValue=<span class="synIdentifier">{</span>today<span class="synIdentifier">}</span>
margin=<span class="synConstant">"normal"</span>
/>
</pre>
<p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/f/fujjima/20210101/20210101144435.png" alt="f:id:fujjima:20210101144435p:plain" title="" class="hatena-fotolife" itemprop="image"></span></p>
<h4>良かった例</h4>
<pre class="code lang-javascript" data-lang="javascript" data-unlink>
<span class="synComment">// 年、月、日の区切りがハイフンだときちんとdefaultValueとして指定できる</span>
<span class="synStatement">const</span> today = dayjs().format(<span class="synConstant">'YYYY-MM-DD'</span>)
<TextField
label=<span class="synConstant">"testDay"</span>
type=<span class="synConstant">"date"</span>
defaultValue=<span class="synIdentifier">{</span>today<span class="synIdentifier">}</span>
margin=<span class="synConstant">"normal"</span>
/>
</pre>
<p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/f/fujjima/20210101/20210101144333.png" alt="f:id:fujjima:20210101144333p:plain" title="" class="hatena-fotolife" itemprop="image"></span></p>
<p>詳細は調査中だが、同じようにdatapickerとして使用できる<code>KeyboardDatePicker</code>ではformatに<code>format="MM/dd/yyyy"</code>のように指定してもいける感じなので、どうしてこのような仕様にしているかはよく分からない。
しかも表示される時には<code>YYYY/MM/DD</code>形式だし。スラッシュどこに行った。</p>
<p><a href="https://material-ui.com/components/pickers/#material-ui-pickers">https://material-ui.com/components/pickers/#material-ui-pickers</a></p>