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. elasticdump数据迁移与内外网安装

    elasticdump数据迁移与内外网安装 一.安装node 首先获取安装包 wget https://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64 ...

  2. NameCheap域名怎么样,如何注册购买域名?如何解析域名?

    Namecheap介绍 Namecheap是一家国外域名注册商和网站托管公司,成立于2000年,提供域名注册.虚拟主机.电子邮件托管.SSL证书.免费的WHOIS保护.CDN.VPS主机和独立服务器. ...

  3. 题解 WD与数列

    P5161 WD与数列 可以想到原条件是一个差分形式,所以我们对原数组差分.然后发现答案其实就是 \(\sum_{i<j} \min(lcp(i+1,j+1)+1,j-i)\). 这个东西先跑 ...

  4. uniapp打包所需的ios证书和证书profile文件获取的图文教程

    使用uniapp进行云打包,可以打包android和ios两种app,但是uniapp官方并不能凭空产生这两种平台所需的打包证书. 那么这两种打包证书又是如何获取呢? android相对简单,使用jd ...

  5. 火山引擎VeDI数据技术分享:两个步骤,为Parquet降本提效

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 作者:王恩策.徐庆 火山引擎 LAS 团队 火山引擎数智平台 VeDI 是火山引擎推出的新一代企业数据智能平台,基 ...

  6. 【Java】数组强转问题

    问题产生 问题代码: List<String> strs = new LinkedList<String>(); // 中间有添加元素的操作,这里省略... // 这里toAr ...

  7. 【JS】04 DOM 文档对象模型 P1 查找元素、改变内容、绑定事件

    什么是DOM? Document Object Model 文档指的是HTML文档 当浏览器打开一个网页的时候,实际上把HTML文档读取到内存中进行解析 整个HTML文档被封装为document文档对 ...

  8. 全球首颗车规5纳米 高性能智驾芯片蔚来神玑NX9031 流片成功

    地址: https://weibo.com/tv/show/1034:5060774108790867 https://www.bilibili.com/video/BV1JG411r7LR/

  9. 为什么是Google创造了AlphaGo,而不是其他公司?

    相关: Artificial Intelligence | 60 Minutes Full Episodes 答案: Google一直在进行AI方向的探索: Google有足够的算力.

  10. AI围棋项目:KataGo

    网站地址: https://katagotraining.org/ 项目地址: https://github.com/lightvector/KataGo