今日の何日後
2022年4月20日
今日の何日後は何月何日か計算するツールを作ってみました。
日付入力欄は<input type="date">
日数入力欄は<input type="number">を使います。
IDをそれぞれnyuryoku、nyuryoku2とします。
<input type="date" id="nyuryoku">
<input type="number" id="nyuryoku2">
<input type="date">は、曜日を表示することはできないようです。
クリックしたらカレンダーが出てくるので曜日はそれでまあなんとか。
計算ボタンと結果出力欄を設置します。
IDをそれぞれkeisan、kekkaとします。
<input type="date" id="nyuryoku">
<input type="number" id="nyuryoku2">
<button id="keisan">計算!</button>
<span id="kekka">ここに結果が出ます</span>
日付を入力してエンターを押すとすぐ結果が出るようにするには、全体を<form></form>で囲って、計算ボタンを<input type="submit">にする必要があります。
そのままだとページがリロードされてしまうので、<form>タグにonsubmit="return false"を設定します。
<form onsubmit="return false">
<input type="date" id="nyuryoku">
<input type="number" id="nyuryoku2">
<input type="submit" id="keisan" value="計算!">
<span id="kekka">ここに結果が出ます</span>
</form>
#nyuryokuの初期値を今日の日付に設定します。
window.onload = function() {
var date = new Date()
var year = date.getFullYear()
var month = date.getMonth() + 1
var day = date.getDate()
var toTwoDigits = function(num, digit) {
num += ''
if (num.length < digit) {
num = '0' + num
}
return num
}
var yyyy = toTwoDigits(year, 4)
var mm = toTwoDigits(month, 2)
var dd = toTwoDigits(day, 2)
var ymd = yyyy + "-" + mm + "-" + dd;
document.getElementById("nyuryoku").value = ymd;
}
参考:ワカログ|input="date"に現在の日付(今日の日付)を設定する
月や日が一桁の時は十の位に0が表示されるようにしています。
これをゼロ埋め(zero padding)というそうです。
#keisanを押すと#nyuryokuの日付に#nyuryoku2の日数が加算され、#kekkaに出力されるようにします。
document.getElementById("keisan").onclick = function() {
var dt = new Date($('#nyuryoku').val());
dt.setDate(dt.getDate() + +$('#nyuryoku2').val());
$('#kekka').text(dt);
};
一応これで完成ですが、このままだと結果が「Wed Apr 20 2022 09:00:00 GMT+0900(日本標準時)」のように出力されます。
これを「2022年4月20日水曜日」に変換します。
document.getElementById("keisan").onclick = function() {
var dt = new Date($('#nyuryoku').val());
dt.setDate(dt.getDate() + +$('#nyuryoku2').val());
var dayOfWeekStrJP = ["日", "月", "火", "水", "木", "金", "土", ]
var formatted = `
${dt.getFullYear()}年
${(dt.getMonth()+1).toString().padStart(2, '0')}月
${dt.getDate().toString().padStart(2, '0')}日
${dayOfWeekStrJP[dt.getDay()]}曜日
`.replace(/\n|\r/g, '');
$('#kekka').text(formatted);
};
参考:PisukeCode - Web開発まとめ|JavaScriptで日付(Date)をフォーマットする3つの方法
「テンプレートリテラル」という方法を使ってみました。
マイナスの数値を入力すれば「何日前」も計算できます。
ケミストでは引き続き「ブログ」のテーマを募集しています!
調べてほしい、まとめてほしい薬の情報がありましたら教えてください。