本文从 Obsidian 撰写发布
Obsidian TimeStamper 插件使用教程与问题排查
一、插件简介
TimeStamper 是一个 Obsidian 时间戳插件,可以快速在笔记中插入日期、时间或日期+时间组合。支持自定义格式、快捷键绑定和自动换行。
主要功能
- ⏰ 一键插入时间戳
- 📅 一键插入日期戳
- 📆 一键插入日期+时间组合戳
- 🎨 完全自定义时间格式
- ⌨️ 支持快捷键绑定
- 📝 自动换行选项
适用场景
- 笔记日志记录
- 任务时间追踪
- 会议纪要时间标记
- 日记写作
- 项目管理时间记录
二、安装方法
方法一:从 GitHub 下载
- 访问插件的 GitHub 仓库
- 下载最新 Release 版本
- 解压到 Obsidian 插件目录
方法二:手动安装
将插件文件夹放入 Obsidian 插件目录:
- Windows:
C:\Users\你的用户名\AppData\Roaming\obsidian\plugins\ - macOS:
~/Library/Application Support/obsidian/plugins/ - Linux:
~/.config/obsidian/plugins/
- Windows:
- 在 Obsidian 设置 → 第三方插件中启用该插件
三、插件命令
插件提供 4 个命令:
| 命令名称 | 功能 | 是否需要弹窗 |
|---|---|---|
| Insert time stamp | 插入时间 | ❌ 否 |
| Insert date stamp | 插入日期 | ❌ 否 |
| Insert date and time stamp | 插入日期+时间 | ❌ 否 |
| Insert custom time/date stamp (with dialog) | 自定义格式插入 | ✅ 是 |
快捷键设置
- 打开 Obsidian 设置 → 快捷键
- 搜索 "time stamp" 或 "date stamp"
- 为以下命令设置快捷键:
| 命令 | 推荐快捷键 | 说明 |
|---|---|---|
| Insert time stamp | Ctrl+Shift+T | 插入当前时间 |
| Insert date stamp | Ctrl+Shift+D | 插入当前日期 |
| Insert date and time stamp | Ctrl+Shift+F | 插入当前日期+时间 |
四、格式设置
4.1 设置项说明
在插件设置页面可以配置:
| 设置项 | 说明 | 默认值 |
|---|---|---|
| Date Stamp Template | 日期格式 | YYYY-MM-DD |
| Time Stamp Template | 时间格式 | HH:mm:ss |
| Date + Time Stamp Template | 日期+时间格式 | YYYY-MM-DD HH:mm:ss |
| Insert line break | 是否自动换行 | false |
4.2 格式语法详解
日期部分(大写)
| 格式 | 含义 | 示例 |
|---|---|---|
YYYY | 年份(4 位) | 2026 |
YY | 年份(2 位) | 26 |
MM | 月份(2 位) | 08 |
M | 月份(1-2 位) | 8 |
DD | 日期(2 位) | 02 |
D | 日期(1-2 位) | 2 |
时间部分(小写)
| 格式 | 含义 | 示例 |
|---|---|---|
HH | 小时(24 小时制,2 位) | 13 |
H | 小时(24 小时制,1-2 位) | 13 |
hh | 小时(12 小时制,2 位) | 01 |
h | 小时(12 小时制,1-2 位) | 1 |
mm | 分钟(2 位) | 09 |
m | 分钟(1-2 位) | 9 |
ss | 秒(2 位) | 05 |
s | 秒(1-2 位) | 5 |
A | 上午/下午(大写) | AM |
a | 上午/下午(小写) | am |
4.3 常用格式示例
| 用途 | 格式字符串 | 显示结果 |
|---|---|---|
| 标准日期 | YYYY-MM-DD | 2026-08-02 |
| 中文日期 | YYYY 年 MM 月 DD 日 | 2026 年 08 月 02 日 |
| 标准时间(24 小时) | HH:mm:ss | 13:09:21 |
| 标准时间(12 小时) | hh:mm:ss A | 01:09:21 PM |
| 标准日期+时间 | YYYY-MM-DD HH:mm:ss | 2026-08-02 13:09:21 |
| 文件名友好 | YYYYMMDD_HHmmss | 20260802_130921 |
| 日志格式 | [YYYY-MM-DD HH:mm:ss] | [2026-08-02 13:09:21] |
五、常见问题与排查
问题 1:插入的时间不正确(显示 01:08 而不是正确时间)
现象:使用快捷键插入时间,总是显示固定的时间(如 01:08),与实际时间不符。
原因分析:
- 插件本身代码正常,能正确获取系统时间
- 问题出在格式字符串设置错误
- 错误使用了
MM(月份)来表示分钟
错误示例:
设置:YYYY-MM-DD HH:MM
解析:年-月-日 小时:月份
显示:2026-08-02 01:08 ← 08 是月份(8 月),不是分钟正确示例:
设置:YYYY-MM-DD HH:mm
解析:年-月-日 小时:分钟
显示:2026-08-02 01:09 ← 09 是分钟解决方案:在插件设置中,将时间格式的分钟部分从 MM(大写)改为 mm(小写)。
问题 2:时区问题导致时间偏差
现象:插入的时间比实际时间慢或快几个小时。
原因分析:
- 可能是系统时区设置问题
- 或者 moment.js 使用了 UTC 时间而非本地时间
解决方案:
- 检查电脑系统时间和时区设置是否正确
- 插件已修复为使用
moment(new Date())获取本地时间
问题 3:格式修改后不生效
解决方案:
- 在 Obsidian 设置 → 第三方插件中关闭再重新启用该插件
- 或者重启 Obsidian
- 检查是否修改了正确的设置项(日期/时间/日期+时间三个独立设置)
六、插件优化内容
6.1 原始版本存在的问题
- 时间获取问题:原代码使用
moment(now)获取时间,在某些 Obsidian 版本中无法正确获取系统时间 - 逻辑不一致:日期和时间可以一键插入,但日期+时间需要弹窗确认
- 缺少日期+时间格式设置:没有独立的日期+时间格式配置项
6.2 优化调整内容
优化 1:修复时间获取方式
修改前:
const now = new Date();
const stamp = moment(now).format(this.settings.timeStampFormat);修改后:
const now = new Date();
const stamp = moment(now).format(this.settings.timeStampFormat);
// 确保使用本地时间说明:明确使用 new Date() 获取系统本地时间,避免时区问题。
优化 2:新增日期+时间一键插入命令
新增命令:Insert date and time stamp
- 无需弹窗,一键插入
- 使用独立的
dateTimeStampFormat格式配置 - 与其他命令保持一致的交互体验
代码实现:
this.addCommand({
id: 'obsidian-fast-datetime-stamp',
name: 'Insert date and time stamp',
editorCallback: (editor) => {
const now = new Date();
const stamp = moment(now).format(this.settings.dateTimeStampFormat);
if (this.settings.newLine) {
editor.replaceSelection(stamp + '\n');
}
else {
editor.replaceSelection(stamp);
}
logger('Inserted datetime stamp: ' + stamp, 9);
}
});优化 3:新增独立的日期+时间格式设置
新增设置项:Date + Time Stamp Template
interface OtsPluginSettings {
timeStampFormat: string;
dateStampFormat: string;
dateTimeStampFormat: string; // 新增
lastFormat: string;
newLine: boolean;
}
const DEFAULT_SETTINGS: OtsPluginSettings = {
timeStampFormat: 'HH:mm:ss',
dateStampFormat: 'YYYY-MM-DD',
dateTimeStampFormat: 'YYYY-MM-DD HH:mm:ss', // 默认值
lastFormat: '',
newLine: false
}优化 4:保留自定义弹窗功能
将原有弹窗命令重命名为 Insert custom time/date stamp (with dialog),用于需要临时使用特殊格式的场景。
6.3 优化后的命令对比
| 命令 | 优化前 | 优化后 |
|---|---|---|
| Insert time stamp | ✅ 一键插入 | ✅ 一键插入 |
| Insert date stamp | ✅ 一键插入 | ✅ 一键插入 |
| Insert date and time stamp | ❌ 需要弹窗 | ✅ 一键插入 |
| Insert custom time/date stamp | ✅ 弹窗自定义 | ✅ 弹窗自定义(名称更清晰) |
七、调试方法
如果遇到问题,可以通过以下方法排查:
7.1 查看控制台日志
- 在 Obsidian 中按
Ctrl+Shift+I(Windows)或Cmd+Option+I(Mac)打开开发者工具 - 切换到 Console(控制台)标签
- 使用快捷键插入时间戳,观察控制台输出
7.2 手动测试时间获取
在控制台输入以下命令测试:
const now = new Date();
console.log('当前时间:', now.toLocaleTimeString());
console.log('moment 格式化:', moment(now).format('HH:mm:ss'));7.3 检查插件版本
在控制台输入:
const plugins = app.plugins.plugins;
for (let key in plugins) {
if (key.includes('timestamper')) {
console.log('插件版本:', plugins[key].manifest.version);
}
}八、版本信息
| 版本 | 更新内容 |
|---|---|
| v 1.0.0 | 初始版本 |
| v 1.1.0 | 迁移到 moment.js |
| v 1.2.0 | 添加换行选项 |
| v 1.3.0 | 添加 Enter 键快速确认 |
| v 1.3.1 | 修复时间获取问题 |
| v 1.3.2 | 添加调试日志 |
| v 1.4.0 | 新增日期+时间一键插入命令及独立格式设置 |
九、总结
关键要点
- 格式字符串注意大小写:日期用大写(
YYYY、MM、DD),时间用小写(HH、mm、ss) - 分钟是
mm不是MM:MM表示月份,mm表示分钟 - 三个独立命令:时间、日期、日期+时间均可一键插入
- 设置独立配置:日期、时间、日期+时间三个格式独立设置,互不影响
- 自定义弹窗备用:特殊格式需求使用弹窗功能
快速上手
- 安装插件
- 设置快捷键(推荐:
Ctrl+Shift+T、Ctrl+Shift+D、Ctrl+Shift+F) - 在设置中配置三种格式
- 开始使用!