Emacs进阶之插入时间信息(一百六十三)
简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者
新书发布:《Android系统多媒体进阶实战》🚀
优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀
优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀
优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
🍉🍉🍉文章目录🍉🍉🍉
- 🌻1.前言
- 🌻2. Emacs之时间获取介绍
- 内部时间表示
- 主要函数
- 时间精度与限制
- 应用场景
- 🌻3. 代码实例
- 🐓3.1 直接插入当前时间
- 🐓3.2 只插入当前日期
- 🐓3.3 自定义格式
🌻1.前言
本篇目的:Emacs进阶之插入时间信息
需求:在代码调试时,有时候暂时中断,可以记录一个时间,下次继续Debug…
🌻2. Emacs之时间获取介绍
Emacs 是一款强大的文本编辑器,不仅可以编辑文本,还内置了丰富的时间和日期处理功能。Emacs 使用 Lisp 语言实现,其时间计算方式主要基于两种内部表示法:时间戳(timestamp) 和 秒数列表(time value list)。
内部时间表示
-
时间戳(timestamp):
- 这是 Emacs 时间的基本单位,表示从 Unix 纪元(1970年1月1日)到当前时间的秒数。
- 通过函数
current-time
,可以获得当前时间的内部表示值,例如'(HIGH LOW USEC PSEC)
,其中:HIGH
和LOW
组成一个 64 位整数,表示自纪元起的秒数。USEC
是微秒部分,PSEC
是皮秒部分(通常为 0)。
-
时间差表示(time value list):
- 时间可以表示为秒和纳秒的列表形式:
(SECONDS . NANOSECONDS)
。 - 例如,通过函数
time-add
和time-subtract
可以计算时间差。
- 时间可以表示为秒和纳秒的列表形式:
主要函数
-
获取当前时间:
current-time
: 返回当前时间的内部格式值。current-time-string
: 返回可读格式时间字符串,如"Fri Nov 15 14:35:00 2024"
。
-
格式化时间:
format-time-string
是 Emacs 中的核心函数,用于将时间格式化为字符串。
输出示例:(format-time-string "%Y-%m-%d %H:%M:%S")
"2024-11-15 14:35:00"
。
-
时间计算:
time-add
:计算时间加法。time-subtract
:计算两个时间之间的差值。- 例如:
(time-add (current-time) (seconds-to-time 3600)) ; 当前时间加 1 小时
-
转换时间格式:
encode-time
:将年月日时分秒转换为内部时间。decode-time
:将内部时间转换为可读的分解值(如年月日、时分秒等)。
时间精度与限制
- Emacs 支持微秒精度,时间计算非常准确。
- 由于 Emacs 内部时间表示基于 64 位整数,因此支持的时间范围非常广,可处理从公元前到数千年后的时间。
应用场景
Emacs 的时间计算功能可用于编程任务调度、日志管理、文件时间戳处理等,例如自动插入时间戳到文档,或者计算特定事件的时间差。
🌻3. 代码实例
🐓3.1 直接插入当前时间
- 格式:YYYY-MM-DD HH:MM:SS
(defun insert-current-date-time ()"Insert the current date and time in 'YYYY-MM-DD HH:MM:SS' format."(interactive)(insert (format-time-string "%Y-%m-%d %H:%M:%S")))
解释:
[format-time-string “%Y-%m-%d %H:%M:%S”] 格式化时间为:YYYY-MM-DD HH:MM:SS
🐓3.2 只插入当前日期
- 格式:YYYY-MM-DD
(defun insert-current-date ()"Insert the current date in 'YYYY-MM-DD' format."(interactive)(insert (format-time-string "%Y-%m-%d")))
🐓3.3 自定义格式
- 格式:YYYY年MM月DD日 HH时MM分SS秒
(defun insert-custom-date-time ()"Insert the current date and time in 'YYYY年MM月DD日 HH时MM分SS秒' format."(interactive)(insert (format-time-string "Last Debug Time:%Y年%m月%d日 %H时%M分%S秒")))