テンプレート
https://gyazo.com/ec61deba419e54f168905140ddd41eb3
https://gyazo.com/cc75e96a555a71147380a35eda259cf7
仕様
月曜日から日曜日までの行を書きます。
週番号の計算方法を選べるようにしてあります。
デフォルトはISO式の月曜始まり
カスタマイズする場合、
1. 下のテンプレートをコピー
2. 自分のプロジェクトの任意のページにペースト
3. 編集
ってな流れです。
ISO式では木曜日が含まれる週を数えるのだけど、たとえば
2017年の1月1日(日曜日)は2016年の52週目に含まれる
この週の木曜日はまだ2016年なので
2017年の1週目は1月2日から始まる
ってことになるよ。
米国式は1月1日が含まれる週をその年の1週目として、日~月で1週間を数えるので、2017年1月1日から1月7日が1週目。
code:週報テンプレート.js
(function() {
Date.prototype.setWeek = function(year, week, day) {
var week1 = new Date(year, 0, 1)
var prevLastDay = new Date(week1.getTime() - 86400000 * (week1.getDay() || 7))
return this.setTime(prevLastDay.getTime() + 86400000 * ((week - 1) * 7 + day))
}
Date.prototype.setISOWeek = function(year, week, day) {
var week1 = new Date(year, 0, 4)
var prevLastDay = new Date(week1.getTime() - 86400000 * (week1.getDay() || 7))
return this.setTime(prevLastDay.getTime() + 86400000 * ((week - 1) * 7 + day))
}
Date.prototype.format = function(format) {
// yyyy, MM, dd, ddd だけ
.replace('yyyy', this.getFullYear())
.replace('MM', ('0' + (this.getMonth() + 1)).slice(-2))
.replace('dd', ('0' + this.getDate()).slice(-2))
}
// 処理ここから
const yearWeek = scrapbox.Page.title.split("'") // 新規ページの仮タイトルから、年と週番号を取得して
const d = new Date()
// 週番号の計算方法をここで指定するよ
//d.setWeek(yearWeek0, yearWeek1, 0) // 米国式・月曜始まり //d.setWeek(yearWeek0 - 1, yearWeek1, 6) // 米国式・日曜始まり d.setISOWeek(yearWeek0, yearWeek1, 0) // ISO式・月曜始まり //d.setISOWeek(yearWeek0, yearWeek1 - 1, 6) // ISO式・日曜始まり const dateFormat = "yyyy-MM-dd"
const dayFormat = "ddd"
// ここで返してるものがページのタイトルと本文になるよ! 1週間分の日付と曜日を並べていきます
return `
Backlog
`
})()
汎用的に使えるシンプル版
code:週報テンプレートS.js
(function() {
Date.prototype.setWeek = function(year, week, day) {
var week1 = new Date(year, 0, 1)
var prevLastDay = new Date(week1.getTime() - 86400000 * (week1.getDay() || 7))
return this.setTime(prevLastDay.getTime() + 86400000 * ((week - 1) * 7 + day))
}
Date.prototype.setISOWeek = function(year, week, day) {
var week1 = new Date(year, 0, 4)
var prevLastDay = new Date(week1.getTime() - 86400000 * (week1.getDay() || 7))
return this.setTime(prevLastDay.getTime() + 86400000 * ((week - 1) * 7 + day))
}
Date.prototype.format = function(format) {
// yyyy, MM, dd, ddd だけ
.replace('yyyy', this.getFullYear())
.replace('MM', ('0' + (this.getMonth() + 1)).slice(-2))
.replace('dd', ('0' + this.getDate()).slice(-2))
}
// 処理ここから
const yearWeek = scrapbox.Page.title.split("'") // 新規ページの仮タイトルから、年と週番号を取得して
const d = new Date()
// 週番号の計算方法をここで指定するよ
//d.setWeek(yearWeek0, yearWeek1, 0) // 米国式・月曜始まり //d.setWeek(yearWeek0 - 1, yearWeek1, 6) // 米国式・日曜始まり d.setISOWeek(yearWeek0, yearWeek1, 0) // ISO式・月曜始まり //d.setISOWeek(yearWeek0, yearWeek1 - 1, 6) // ISO式・日曜始まり const dateFormat = "yyyy-MM-dd"
const dayFormat = "ddd"
// ここで返してるものがページのタイトルと本文になるよ! 1週間分の日付と曜日を並べていきます
return `
Backlog
`
})()
2018-07-01 ISO方式の日付を取得する例にバグありましたので修正
2020-01-26 Moment.js が使えなくなったぽいのでテンプレートを修正