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. 最佳 AI 翻译工作流:全世界最信达雅的翻译

    吴恩达老师提出了一种反思翻译的大语言模型 (LLM) AI 翻译工作流程--GitHub - andrewyng/translation-agent,具体工作流程如下: 提示一个 LLM 将文本从 s ...

  2. docker 容器挂载技术

    创建和使用桥接网络 docker network create --driver bridge --subnet 192.168.13.0/24 --gateway 192.168.13.1 mqyn ...

  3. 【Windows】远程访问设置

    Windows自带了远程访问功能: Win + R 打开运行,输入[mstsc] 连接需要提供主机地址,和用户账号 下面的选项可以保存此连接为文件,下一次连接直接打开文件即可访问 当然设置了以后可能还 ...

  4. 【Shiro】06 自定义Realm授权实现

    创建一个激活的用户类: public class ActiverUser { private User user; private List<String> roleList; priva ...

  5. 美国空军未来利用AI控制无人僚机执行空战或对地作战任务成为可能——AI算法强化学习控制无人机执行空战或对地作战成为可能

    来源: https://export.shobserver.com/baijiahao/html/640202.html https://baijiahao.baidu.com/s?id=177346 ...

  6. 华为超算平台git、cmake、wget、curl报错:SSLv3_client_method version OPENSSL_1_1_0 not defined in file libssl.so.1.1 with link time reference——解决方法

    最近在使用超算平台时报错,不管是git.cmake.wget.curl中的哪个都报错,大致错误: /usr/bin/cmake3: relocation error: /usr/lib64/libcu ...

  7. [CEOI2018] Lottery 题解

    前言 题目链接:洛谷. 题意简述 给出序列 \(a_1 \ldots a_n\) 和常数 \(l \leq n\),定义: \[\operatorname{dis}(i, j) = \sum _ {k ...

  8. 这应该是全网最全的CSP-S初赛复习吧

    点我到洛谷看 \(Update\ 2024/8/2:\) 加入了在数据结构中增加了"树",做出部分更改. linux基础命令 cd 切换目录 ls 列出目前工作目录所含的文件及子目 ...

  9. OI之奇葩错误

    链式前向星(写法 \(1\)):\(head\) 数组不初始化成 \(-1\).(同学写题) 链式前向星(写法 \(2\)):\(idx\) 不初始化成 \(1\).(同学写题) 用到队列时忘记 \( ...

  10. springboot2集成oauth2坑一(Possible CSRF detected - state parameter was required but no state could )

    码云地址:https://gitee.com/lpxs/lp-springcloud.git 有问题可以多沟通:136358344@qq.com. 刚开始用springboot1.5集成oauth2没 ...