日報テンプレートへの週番号追加
✅Done
要件
日報に週情報のブラケティングを埋め込みたい
例: [週報 2024-w14]
この14を出したい
infoboxでの週報をみやすくするのが目的
必要っぽいこと
テンプレートに書き込む
変数に格納
参照
gemini先生の指南を頂く
template.jfunction getWeekNumber(date) {
// 年の最初の木曜日を取得
const firstThursday = new Date(date.getFullYear(), 0, 4);
// 1月1日からその木曜日までの経過日数
const daysSinceJan1 = Math.floor((date - firstThursday) / (1000 * 60 * 60 * 24));
// 週番号を計算
const weekNumber = Math.floor(daysSinceJan1 / 7) + 1;
// 週番号を2桁で表示
return weekNumber.toString().padStart(2, "0");
}
const today = new Date();
const number = getWeekNumber(today);
return `${number}`
その木曜日、ってのがいまいちよくわからんな(足りない言語化)

1月1日が第一週に属する
月曜日が週始まりである
単純に計算の問題であるし、構文の問題でもある
template.jfunction dateToIso8601Week(date){
// 引数のDateと同じ週の木曜日を計算
// 259200000 = 3days * 24hour * 60min * 60s * 1000ms
// 604800000 = 1week * 7days * 24hour * 60min * 60s * 1000ms
const thursday = new Date(Math.ceil((date.getTime() - 259200000) / 604800000) * 604800000);
// 木曜日と同じ年の1月1日を計算
const firstDayOfYear = new Date(thursday.getFullYear(), 0, 1);
// 木曜日がその年の第何週かを計算する
const weekOfYear = Math.floor((thursday.getTime() - firstDayOfYear.getTime()) / 604800000) + 1;
// 曜日をISO 8601に直す (jsは0=日~6=金、ISO 8601は1=月~7=日)
const dayOfWeek = date.getDay() !== 0 ? date.getDay() : 7;
// yyyy-Www-D 形式に直す
return `${thursday.getFullYear()}-W${('0' + weekOfYear).slice(-2)}-${dayOfWeek}`;
}
function getWeekNumber {
const today = new Date();
const weekNumber = dateToIso8601Week(today);
return `${weekNumber}`;
}
動作した!

template.js(function() {
function getWeekNumber() {
const today = new Date();
// 引数のDateと同じ週の木曜日を計算
// 259200000 = 3days * 24hour * 60min * 60s * 1000ms
// 604800000 = 1week * 7days * 24hour * 60min * 60s * 1000ms
const thursday = new Date(
Math.ceil((today.getTime() - 259200000) / 604800000) * 604800000
);
// 木曜日と同じ年の1月1日を計算
const firstDayOfYear = new Date(thursday.getFullYear(), 0, 1);
// 木曜日がその年の第何週かを計算する
const weekOfYear =
Math.floor((thursday.getTime() - firstDayOfYear.getTime()) / 604800000) + 1;
// 曜日をISO 8601に直す (jsは0=日~6=金、ISO 8601は1=月~7=日)
//const dayOfWeek = today.getDay() !== 0 ? today.getDay() : 7;
// yyyy-Www 形式に直す
return `${thursday.getFullYear()}-W${('0' + weekOfYear).slice(-2)}`;
}
const weekNumber = getWeekNumber();
return `${weekNumber}`;
})()
console.log(weekNumber);
ここで数字は出てるからいいとこまでは行っていそう

問題はどうやってテキストエリアに出すか
うまく動作している形式(全体を
function
で囲む)で動かしたらうまくいった
