三股水
Obsidian TimeStamper 插件使用教程与问题排查
本文从 Obsidian 撰写发布

Obsidian TimeStamper 插件使用教程与问题排查

一、插件简介

TimeStamper 是一个 Obsidian 时间戳插件,可以快速在笔记中插入日期、时间或日期+时间组合。支持自定义格式、快捷键绑定和自动换行。

主要功能

  • ⏰ 一键插入时间戳
  • 📅 一键插入日期戳
  • 📆 一键插入日期+时间组合戳
  • 🎨 完全自定义时间格式
  • ⌨️ 支持快捷键绑定
  • 📝 自动换行选项

适用场景

  • 笔记日志记录
  • 任务时间追踪
  • 会议纪要时间标记
  • 日记写作
  • 项目管理时间记录

二、安装方法

方法一:从 GitHub 下载

  1. 访问插件的 GitHub 仓库
  2. 下载最新 Release 版本
  3. 解压到 Obsidian 插件目录

方法二:手动安装

  1. 将插件文件夹放入 Obsidian 插件目录:

    • Windows: C:\Users\你的用户名\AppData\Roaming\obsidian\plugins\
    • macOS: ~/Library/Application Support/obsidian/plugins/
    • Linux: ~/.config/obsidian/plugins/
  2. 在 Obsidian 设置 → 第三方插件中启用该插件

三、插件命令

插件提供 4 个命令:

命令名称功能是否需要弹窗
Insert time stamp插入时间❌ 否
Insert date stamp插入日期❌ 否
Insert date and time stamp插入日期+时间❌ 否
Insert custom time/date stamp (with dialog)自定义格式插入✅ 是

快捷键设置

  1. 打开 Obsidian 设置 → 快捷键
  2. 搜索 "time stamp" 或 "date stamp"
  3. 为以下命令设置快捷键:
命令推荐快捷键说明
Insert time stampCtrl+Shift+T插入当前时间
Insert date stampCtrl+Shift+D插入当前日期
Insert date and time stampCtrl+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-DD2026-08-02
中文日期YYYY 年 MM 月 DD 日2026 年 08 月 02 日
标准时间(24 小时)HH:mm:ss13:09:21
标准时间(12 小时)hh:mm:ss A01:09:21 PM
标准日期+时间YYYY-MM-DD HH:mm:ss2026-08-02 13:09:21
文件名友好YYYYMMDD_HHmmss20260802_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 时间而非本地时间

解决方案

  1. 检查电脑系统时间和时区设置是否正确
  2. 插件已修复为使用 moment(new Date()) 获取本地时间

问题 3:格式修改后不生效

解决方案

  1. 在 Obsidian 设置 → 第三方插件中关闭再重新启用该插件
  2. 或者重启 Obsidian
  3. 检查是否修改了正确的设置项(日期/时间/日期+时间三个独立设置)

六、插件优化内容

6.1 原始版本存在的问题

  1. 时间获取问题:原代码使用 moment(now) 获取时间,在某些 Obsidian 版本中无法正确获取系统时间
  2. 逻辑不一致:日期和时间可以一键插入,但日期+时间需要弹窗确认
  3. 缺少日期+时间格式设置:没有独立的日期+时间格式配置项

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 查看控制台日志

  1. 在 Obsidian 中按 Ctrl+Shift+I(Windows)或 Cmd+Option+I(Mac)打开开发者工具
  2. 切换到 Console(控制台)标签
  3. 使用快捷键插入时间戳,观察控制台输出

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新增日期+时间一键插入命令及独立格式设置

九、总结

关键要点

  1. 格式字符串注意大小写:日期用大写(YYYYMMDD),时间用小写(HHmmss
  2. 分钟是 mm 不是 MMMM 表示月份,mm 表示分钟
  3. 三个独立命令:时间、日期、日期+时间均可一键插入
  4. 设置独立配置:日期、时间、日期+时间三个格式独立设置,互不影响
  5. 自定义弹窗备用:特殊格式需求使用弹窗功能

快速上手

  1. 安装插件
  2. 设置快捷键(推荐:Ctrl+Shift+TCtrl+Shift+DCtrl+Shift+F
  3. 在设置中配置三种格式
  4. 开始使用!
😊
提交