
今日主页
原理不讲那么多了,直接贴配置吧(注意把 ``` 的 ' 去掉)。
---
banner: "https://bingw.jasonzeng.dev"
banner_lock: true
---
'```dataviewjs
await dv.view("Obsidian/views/countdownView")
'```
去年今日 `= "[["+(date(today) - dur(1 years))+"]]"`
--- start-multi-column: ExampleRegion1
'```column-settings
number of columns: 2
'```
今日待办
'``` tasks
not done
filter by function task.file.filename.includes(moment().format('YYYY-MM-DD'))
sort by function task.priorityNumber
short mode
'```
--- end-column ---
已完成任务
'``` tasks
done on today
short mode
'```
--- end-multi-column
## 待读
'```dataview
list
from "待读"
sort file.ctime desc
limit 10
'```
稍微解释一下:
需要安装 HomePage 和 Banner 插件。
banner: "https://bingw.jasonzeng.dev",就是获取必应的每日一图,接口好多,可以自己换。
今日待办 和 已完成任务 分栏是通过插件 Multi-Column Markdown 实现的。
今日待办 和 已完成任务 数据源是日记(Daily),所以需要启用系统插件 Daily notes。
👋 今天是 2024 年 08 月 24 日 星期六 ,农历七月廿一。本周还剩 0 天,8 月还剩 7 天,2024 年还剩129 天。 是通过 js 实现的,代码如下:
// 创建视图的主函数
async function CountdownView() {
var now_time = new Date();
var today_time = now_time.toLocaleString("en-US", { timeZone: "Asia/Shanghai" });
// 使用 moment.js 获取日期和时间信息
var day_number = moment(today_time).format('DD');
var month_number = moment(today_time).format('M');
var year_number = moment(today_time).format('YYYY');
// 将星期几改为中文格式
var formattedDate = moment(today_time).format(' YYYY 年 MM 月 DD 日 dddd ')
.replace("Monday", "星期一")
.replace("Tuesday", "星期二")
.replace("Wednesday", "星期三")
.replace("Thursday", "星期四")
.replace("Friday", "星期五")
.replace("Saturday", "星期六")
.replace("Sunday", "星期日");
dv.el('span', '👋 今天是<span class="ob-special-font-style">' + formattedDate + ' </span>,');
// 将农历日期转化为中文
var cnNumbers = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"];
function toChineseNum(num) {
if (num <= 10) return cnNumbers[num];
if (num > 10 && num < 20) return "十" + cnNumbers[num - 10];
if (num === 20) return "二十";
if (num > 20 && num < 30) return "廿" + cnNumbers[num - 20];
return num;
}
var today_local_month = now_time.toLocaleString('zh-u-ca-chinese', { month: "numeric" });
var today_local_day = now_time.toLocaleString('zh-u-ca-chinese', { day: "numeric" });
var today_local_day_num = Number(today_local_day.split('日')[0]);
var lunarDay = (today_local_day_num > 10 ? toChineseNum(today_local_day_num) : "初" + cnNumbers[today_local_day_num]);
dv.el('span', '农历<span class="ob-special-font-style">' + toChineseNum(today_local_month) + lunarDay + '</span>。');
// 计算本周、本月、今年的剩余天数
const now = moment();
const endOfWeek = moment().endOf('week');
const endOfMonth = moment().endOf('month');
const endOfYear = moment().endOf('year');
const weekDiff = endOfWeek.diff(now, 'days');
const monthDiff = endOfMonth.diff(now, 'days');
const yearDiff = endOfYear.diff(now, 'days');
dv.el('span', '本周还剩 <span class="ob-special-font-style">' + weekDiff + '</span> 天,');
if (monthDiff == 0) {
dv.el('span', '也是 <span class="ob-special-font-style">' + month_number + '</span> 月的最后一天,');
} else {
dv.el('span', month_number + ' 月还剩 <span class="ob-special-font-style">' + monthDiff + '</span> 天,');
}
dv.el('span', year_number + ' 年还剩<span class="ob-special-font-style">' + yearDiff + '</span> 天。');
}
// 执行主函数
CountdownView();
安装的插件好多,启用的如下:

插件
Dust Calendar 就是那个农历日历;Rollover Daily Todos 可以在新建日记的时候,把昨天没完成的任务自动搬过来,省得自己去复制。
好了,就这样。