IntelliJ IDEA插入时间文本

需求: 在使用IDEA编辑一些文本时,需要插入指定格式的当前时间文本,首先想到的是找找有没有相关的IDEA插件,看到确实有别的猿做过相关的插件,但当时找到的文章是需要下载博主提供的离线插件jar包,而且时间格式是否能灵活自定义还未知,且当时刚好灵光一现,有了别的方法,一个不需要安装插件,而且更加灵活自由的方法,所以没有往下细看。

1和2的内容有兴趣了解的可以看看,可以跳过,具体操作在3

1. 解决思路

利用IDEA的Live Template(不记得中文翻译叫啥了,好像是叫热加载模板还是啥,后面统一叫预设模板)功能来做,这个设置位于File | Settings | Editor | Live Templates,Live Template是IDEA的预设代码模板工具,设定的代码内容可以通过复杂的函数实现动态化注入所需要的包、方法、时间、作者等程序员所想所需的内容模版,IDEA其实已经为我们预设了很多模板,最熟悉的莫过于sout了,它默认位于Live Template的Java这个Live Template分组下(如下图)。

所以解决思路是:使用IDEA自带的预设模板来定义一些关键字,并在该关键字触发的预设内容中获取当前时间并格式化。

2. 前置知识

还是使用sout举例,如上图,我将预设模板的编辑分为7个部分:

  • ① 触发关键字,即图中的Abbreviation(缩写);

  • ② 模板注释,每次使用时会在旁边显示;

  • ③ 模板文本内容;

  • ④ 模板文本内容中包含的变量,使用两个$符号包裹,中间为变量名,变量是预设模板的核心,它是能动态生成代码内容的主要依仗,变量要插入的内容可以通过一些表达式进行编辑(IDEA一些预设的变量除外,例如图中的$END$,它表示模板触发后,光标所处位置);

  • ⑤ 变量编辑模块(找了一个可编辑的变量,如下图),模板变量可编辑的项包括名称,表达式,默认值(当表达式返回为空时的值)以及“如果已定义则跳过”复选框,其中核心项为表达式,这个表达式可以通过IDEA提供的一些函数来返回特定的值,这些函数清单可访问IntelliJ官网查看(函数清单),至于最后一项Skip if defined复选框,我目前的英语水平理解的是如果前面的表达式和默认值运行的最终结果不为空,则光标不在这个变量处停留(PS:如果只定义了变量不定义表达式,则光标会在变量处依次停留,这个过程中,预设模板每触发一次,跳到下一个变量处),直接跳到下一个变量处,这几项配置的具体释义可查看官网自行翻译;

  • ⑥ 触发这个预设模板的按键,默认为回车键,由图可知,还可以配置制表符键和空格键(None配置成这个目前还不知道有啥意义,配置成这个就只能用鼠标点击触发了);

  • ⑦ 配置这个模板生效的语言代码区域,可以为各种语言单独配置

3. 实操

本次主要用到2个IDEA提供的函数,date([format])time([format])

函数 功能介绍
time([format]) Returns the current system time.
By default, without a parameter, it returns the time in the current system format. To use a different format, provide a parameter according to the SimpleDateFormat specification. For example, the time("H:m z") returns the time formatted as 13:10 UTC.
date([format]) Returns the current system date.
By default, without a parameter, it returns the date in the current system format. To use a different format, provide a parameter according to the SimpleDateFormat specification. For example, the date("Y-MM-d, E, H:m") returns the date formatted as 2020-02-27, Thu, 16:11.

① 进入IDEAFile | Settings | Editor | Live Templates,点击左上角+号,选择创建Template Group(模板组),命名为InertTime(看个人喜好)

② 选中新建的模板组,点击左上角+号,选择创建Live Template(预设模板),触发关键字为curt(current time,看个人喜好),注释为当前时间:yyyy-MM-dd HH:mm:ss,输入模板内容为$datetime$,编辑变量,表达式设置为date("yyyy-MM-dd HH:mm:ss"),设置其应用范围为Everywhere,打开IDEA任意文件,验证。

③ 流程基本相同,我又根据目前我遇到的能穷举的需求,创建了如下模板:

关键字 注释 模板内容 变量表达式
curdt1 当前日期时间:yyyy-MM-dd HH:mm:ss $datetime1$ date("yyyy-MM-dd HH:mm:ss")
curdt2 当前日期时间:yyyy-M-d H:m:s $datetime2$ date("yyyy-M-d H:m:s")
curdt3 当前日期时间:yyyy年MM月dd日HH时mm分ss秒 $datetime3$ date("yyyy年MM月dd日HH时mm分ss秒")
curdt4 当前日期时间:yyyy年M月d日H时m分s秒 $datetime4$ date("yyyy年M月d日H时m分s秒")
curdt5 当前日期时间:yyyy/MM/dd HH:mm $datetime5$ date("yyyy/MM/dd HH:mm")
curdt6 当前日期时间:yyyy/M/d H:m $datetime6$ date("yyyy/M/d H:m")
currd1 当前日期:yyyy-MM-dd $date1$ date("yyyy-MM-dd")
currd2 当前日期:yyyy-M-d $date2$ date("yyyy-M-d")
currd3 当前日期:yyyy/MM/dd $date3$ date("yyyy/MM/dd")
currd4 当前日期:yyyy/M/d $date4$ date("yyyy/M/d")
currt1 当前时间:HH:mm:ss $time1$ time("HH:mm:ss")
currt2 当前时间:H:m:s $time2$ time("H:m:s")

说明:

  1. yyyy-MM-dd HH:mm:ssyy-M-d H:m:s区别。

    yyyy与yy的区别:yy格式化后只保留年份后两位;

    月、日、时、分、秒区别:只有一个字母的格式当数字小于10时,数字只有1位数,两个字母则会用0补齐两位数。

    具体格式化规则参见:SimpleDateFormat

  2. 表中均为24小时制,如果要使用12小时制,可以将H改为小写的h

  3. 如果要插入毫秒,则在时间格式化表达式中加入大写的S,即可格式化为毫秒(btw:加入小写的z可以格式化为时区,加入大写的E可插入英文简写的星期)。

最后:以上为我目前的需求所能用到的时间格式,若还需要其他格式,可以根据规则再行添加。

IntelliJ IDEA插入时间文本的更多相关文章

  1. Word 文档插入时间日期禁止自动更新

    前些天写了点总结并插入时间和日期,记得勾掉了那个自动更新的,但是刚才打开时发现当时的日期和时间变成现在的了,我就纳闷了,然后我去看那插入日期和时间的那个框,里面确实没有勾选自动更新,于是百度, 百度都 ...

  2. Oracle插入时间

    现象:Oracle 插入时间时 ,报错:ORA-01861: 文字与格式字符串不匹配 解决方法: 这个错误一般出现在时间字段上,即你插入的时间格式和数据库现有的时间格式不一致,解决的方法是格式化你 插 ...

  3. Data Base MongoDB 插入时间不正确的问题

    关于mongodb插入时间不正确的问题 mongodb插入时间: 把本地时间转换为utc时间:  也就是比本地时间少8个小时: 读取的时候又会转换本地时间: 所有一般不需处理:

  4. textContent、innerText的用法,在文档中插入纯文本

    有时候需要查询纯文本形式的元素内容,或者在文档中插入纯文本.标准的方法是用Node的textContent属性来实现: var para = document.getElementsByTagName ...

  5. timestamp ---自动更新修改时间 与 记录首次插入时间

    自动更新修改时间: mysql> create table z(a int ,b timestamp on update current_timestamp); mysql> insert ...

  6. python 解析docx文档的方法,以及利用Python从docx文档提取插入的文本对象和图片

    首先安装docx模块,通过pip install docx或者在docx官方链接上下载安装都可以 下面来看下如何解析docx文档:文档格式如下 有3个部分组成 1 正文:text文档 2 一个表格. ...

  7. Oracle 插入时间时 报错:ORA-01861: 文字与格式字符串不匹配 的解决办法

    一.写sql的方式插入到Oracle中 往oracle中插入时间  '2007-12-28 10:07:24'如果直接按照字符串方式,或者,直接使用to_date('2007-12-28 10:07: ...

  8. MongoDB插入时间不正确的问题

    关于mongodb插入时间不正确的问题 今天在给mongodb插入日期格式的数据时发现,日期时间相差8个小时,原来存储在mongodb中的时间是标准时间UTC +0:00,而中国的时区是+8.00 . ...

  9. mongodb插入时间

    插入时间: db.test.insert({time:new Date()}) 给mongodb插入日期格式的数据时发现,日期时间相差8个小时,原来存储在mongodb中的时间是标准时间UTC +0: ...

  10. "额外插入的文本"组件:<ins> —— 快应用组件库H-UI

     <import name="ins" src="../Common/ui/h-ui/text/c_tag_underline"></imp ...

随机推荐

  1. Vue 中引用第三方js总结

    vue中引用第三方js总结 By:授客 QQ:1033553122 实践环境 win10 Vue 2.9.6 本文以引用jsmind为例,讲解怎么在vue中引用第三方js类库 基础示例 1.把下载好的 ...

  2. MySQL 纵表转横表查询实现

    纵表转横表查询实现 By:授客 QQ:1033553122 欢迎加入全国软件测试交流群:7156436 实践环境 MySQL 5.7 创建测试表 CREATE TABLE tb_test ( id I ...

  3. centos7更换aliyun软件源一键脚本

    centos7更换aliyun软件源 centos7更换aliyun软件源一键脚本 curl -O https://raw.githubusercontent.com/Yogoshiteyo/aliy ...

  4. nvidia 机器人仿真环境Isaac Sim

  5. 《Python数据可视化之matplotlib实践》 源码 第四篇 扩展 第十三章

    图  13.10 import matplotlib.pyplot as plt import matplotlib as mpl import numpy as np mpl.rcParams[&q ...

  6. 【转载】 固定随机种子比较强化学习算法——pytorch框架

    原文地址: https://www.cnblogs.com/lucifer1997/p/13801102.html ========================================== ...

  7. 再探 游戏 《 2048 》 —— AI方法—— 缘起、缘灭(7) —— Python版本实现的《2048》游戏的TDL算法

    <2048>游戏在线试玩地址: https://play2048.co/ 如何解决<2048>游戏源于外网的一个讨论帖子,而这个帖子则是讨论如何解决该游戏的最早开始,可谓是&q ...

  8. 手写一个AQS实现

    1.背景 1.AQS简介AQS全称为AbstractQueuedSynchronizer(抽象队列同步器).AQS是一个用来构建锁和其他同步组件的基础框架,使用AQS可以简单且高效地构造出应用广泛的同 ...

  9. 安装RabbitMQ遇到的一些坑

    Ubantu18.0正确安装RabbitMQ 1.安装erlang 因为RabbitMQ需要erlang语言的支持,所以我们需要先安装erlang. sudo apt-get install erla ...

  10. 使用 navigateTo 实现灵活的路由导航

    title: 使用 navigateTo 实现灵活的路由导航 date: 2024/8/13 updated: 2024/8/13 author: cmdragon excerpt: 摘要:本文详细介 ...