Emacs进阶之插入时间信息(一百六十三)

devtools/2024/11/16 19:09:21/

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者

新书发布:《Android系统多媒体进阶实战》🚀
优质专栏: Audio工程师进阶系列原创干货持续更新中……】🚀
优质专栏: 多媒体系统工程师系列原创干货持续更新中……】🚀
优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

🍉🍉🍉文章目录🍉🍉🍉

    • 🌻1.前言
    • 🌻2. Emacs之时间获取介绍
      • 内部时间表示
      • 主要函数
      • 时间精度与限制
      • 应用场景
    • 🌻3. 代码实例
      • 🐓3.1 直接插入当前时间
      • 🐓3.2 只插入当前日期
      • 🐓3.3 自定义格式

🌻1.前言

本篇目的:Emacs进阶之插入时间信息
需求:在代码调试时,有时候暂时中断,可以记录一个时间,下次继续Debug…

🌻2. Emacs之时间获取介绍

Emacs 是一款强大的文本编辑器,不仅可以编辑文本,还内置了丰富的时间和日期处理功能。Emacs 使用 Lisp 语言实现,其时间计算方式主要基于两种内部表示法:时间戳(timestamp)秒数列表(time value list)

内部时间表示

  1. 时间戳(timestamp)

    • 这是 Emacs 时间的基本单位,表示从 Unix 纪元(1970年1月1日)到当前时间的秒数。
    • 通过函数 current-time,可以获得当前时间的内部表示值,例如 '(HIGH LOW USEC PSEC),其中:
      • HIGHLOW 组成一个 64 位整数,表示自纪元起的秒数。
      • USEC 是微秒部分,PSEC 是皮秒部分(通常为 0)。
  2. 时间差表示(time value list)

    • 时间可以表示为秒和纳秒的列表形式:(SECONDS . NANOSECONDS)
    • 例如,通过函数 time-addtime-subtract 可以计算时间差。

主要函数

  1. 获取当前时间

    • current-time: 返回当前时间的内部格式值。
    • current-time-string: 返回可读格式时间字符串,如 "Fri Nov 15 14:35:00 2024"
  2. 格式化时间

    • format-time-string 是 Emacs 中的核心函数,用于将时间格式化为字符串。
      emacs-lisp">(format-time-string "%Y-%m-%d %H:%M:%S")
      
      输出示例:"2024-11-15 14:35:00"
  3. 时间计算

    • time-add:计算时间加法。
    • time-subtract:计算两个时间之间的差值。
    • 例如:
      emacs-lisp">(time-add (current-time) (seconds-to-time 3600)) ; 当前时间加 1 小时
      
  4. 转换时间格式

    • 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秒")))

http://www.ppmy.cn/devtools/134503.html

相关文章

通过wsl配置Qt的中文开发环境

本文列举了一些在WSL上配置Qt编译环境中遇到的一些问题及解决方案 关键词: Win10 22HUbuntu18.04xfce桌面交叉编译arm64qt / qtcreator中文输入及显示标题 安装qt,qtcreatorqt.qpa.screen: QXcbConnection: Could not connect to displayld: cannot find -lGLqmake: could no…

mongoDB的安装及使用

文章目录 1、mongoDB的简介2、mongoDB的安装及配置3、node.js项目中mongoDB使用3.1.引入库3.2.数据操作增删改 4、mongoDB的查询4.1.查询4.2.高级查询 1、mongoDB的简介 MongoDB是一个流行的开源文档型数据库,它使用类似 JSON 的文档模型存储数据,这使得…

基于微信小程序的平安驾校预约平台的设计与实现(源码+LW++远程调试+代码讲解等)

摘 要 互联网发展至今,广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对高校教师成果信息管理混乱,出错率高,信息安全性差,劳动强度大,费时费力…

Tidb数据恢复

表删除delete删除恢复(误删除) 指定时间查询 恢复 #恢复数据 #查看安全点 select * from mysql.tidb where variable_nametikv_gc_safe_point; #安全时间 select * from mysql.tidb where variable_name tikv_gc_life_time; #避免操作过慢 延长安全时间 update mysql.tidb set …

H.264/H.265播放器EasyPlayer.js无插件直播流媒体音视频播放器延迟丢帧的原因

EasyPlayer.js H5播放器,是一款能够同时支持HTTP、HTTP-FLV、HLS(m3u8)、WS、WEBRTC、FMP4视频直播与视频点播等多种协议,支持H.264、H.265、AAC、G711A、Mp3等多种音视频编码格式,支持MSE、WASM、WebCodec等多种解码方…

1436:数列分段II -整型二分

1436&#xff1a;数列分段II 题目来源&#xff1a;一本通 【输入样例】 5 3 4 2 4 5 1【输出样例】 6题意 将数列分成若干段&#xff0c;最多M段&#xff0c;求这些段中最大值中的最小值。&#xff08;M<N是M的约束&#xff09; 思路 最大最小问题考虑二分。由于M越大&…

React Native 全栈开发实战班 - 状态管理入门(Context API)

在 React Native 应用中&#xff0c;状态管理 是构建复杂用户界面的关键。随着应用规模的增长&#xff0c;组件之间的数据共享和状态同步变得越来越复杂。React 提供了多种状态管理工具&#xff0c;其中 Context API 是 React 内置的轻量级解决方案&#xff0c;适用于中小型应用…

World of Warcraft [WeakAuras]Barney Raid Kit - Collapsing Star Indicator

https://wago.io/BarneyCS 黄色数字表示需要修的血量。 绿色数字表示停止修血。 红色数字表示修血过量&#xff0c;以及该坍缩星将在大爆炸读条结束前多少秒爆炸。 Numbers in yellow means damage required. Numbers in green means HP is good, dont damage anymore. Numbers…