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. 把python中的列表转化为字符串

    怎么把python中的列表转换为字符串: 1,列表中非字符串的元素的转换 方法一: 使用列表推导式进行转换 1 list=['hello',6,9,'beizhi'] 2 list=[str(i) f ...

  2. FFmpeg开发笔记(四十二)使用ZLMediaKit开启SRT视频直播服务

    ​<FFmpeg开发实战:从零基础到短视频上线>一书在第10章介绍了轻量级流媒体服务器MediaMTX,通过该工具可以测试RTSP/RTMP等流媒体协议的推拉流.不过MediaMTX的功能 ...

  3. windows上传app到构建版本的方法

    ios打包好ipa文件后,ipa文件需要上架到app store,用户才能安装.而在app store里,无法直接将ipa上传,需要使用工具上传,但是官方提供的工具,比如xcode等只能安装在苹果电脑 ...

  4. python学习总结(重要!!!)

    前取,后不取        index从0开始 list = [1,2,3,4,5,6,7,8,9]print(list[3:7]) #输出:[4, 5, 6, 7]print(list[3:-2]) ...

  5. [香橙派开发系列]3b系统安装和使用vscode进行远程连接

    目录 前言 一.下载镜像和安装系统 二.使用串口助手进行调试 三.查看系统的ip地址 四.使用vscode连接香橙派 最后 前言 之前研究中断的时候一直出现问题,我怀疑是因为zero 3不支持,所以一 ...

  6. 使用Java对稀疏数组的压缩与还原

    稀疏矩阵的压缩与还原 稀疏数组中元素个数很少或者有大量的重复值,如果直接保存保存,会浪费很多空间,这时,就可以考虑对数组进行压缩存储. 先定义一个稀疏数组 //创建一个二维数组 11 * 11 int ...

  7. 【JDBC】Extra03 PostgreSQL-JDBC

    PostgreSQL的JDBC实现: <!-- https://mvnrepository.com/artifact/org.postgresql/postgresql --> <d ...

  8. pytorch报错:Variable._execution_engine.run_backward( # Calls into the C++ engine to run the backward pass RuntimeError: FIND was unable to find an engine to execute this computatio

    GPU模式下运行pytorch代码报错,pytorch为2.2.1,NVIDIA驱动版本535.161.07 File "/home/devil/anaconda3/envs/sample- ...

  9. git submodule子模块操作

    背景 为什么使用子模块,因为需要使用其他人维护的公共组件,但这些组件并不是以包或库的形式使用的.所以采用子模块的形式,无论是自己修改还是拉取也很方便. 子模块操作 增加子模块 git submodul ...

  10. 构建无服务器数仓(三 )EMR Serverless 操作要点、优化以及开放集成测试

    引言 在数据驱动的世界中,企业正在寻求可靠且高性能的解决方案来管理其不断增长的数据需求.本系列博客从一个重视数据安全和合规性的 B2C 金融科技客户的角度来讨论云上云下混合部署的情况下如何利用亚马逊云 ...