Vim技能修炼教程(15) - 时间和日期相关函数
2017-07-18 17:11
627 查看
Vimscript武器库
前面我们走马观花地将Vimscript的大致语法过了一遍。下面我们开始深入看一下Vimscript都给我们准备了哪些武器。如果只用这些武器就够了,那么就太好了,只用Vimscript会导致最佳的兼容性。否则不管是用:python还是使用扩展库,都给可移植性带来麻烦。随着Vim的广泛移植,Vimscript带来的可移植性还是很可观的。这是一门跨相当多平台可用的语言。
之前我们为了区分normal命令和ex命令,在脚本中使用ex命令的前面都加上了”:”前缀。从这讲开始,凡是写在脚本中的ex命令均省略冒号,因为出现在脚本中的一定都是ex命令,normal命令反而要靠normal命令来执行。
时间和日期相关函数
柿子捡软的捏,我们先从规模最小的时间和日期函数开始。localtime(): 返回当前时间的数字。这个值是从1970年1月1日0时开始计算的秒数。
strftime({格式字符串},[时间值]}): 将时间数字转化成字符串。这个函数是不具备可移植性的,其格式受具体使用的C函数库的限制。这个函数并不是所有的Vim上都有的,所以需要在使用前判断是否存在。
getftime({文件名}): 获取一个文件的最后修改时间。返回是个整数,与localtime()一样。
例:
function GetLocalTime() let l:time= localtime() if exists("*strftime") return strftime("%c",l:time) else return l:time endif endfunction
再比如,我们用localtime()来模拟随机数:
function GetRand() let l:seed = localtime() let l:value = l:seed % 100 return l:value / 100.0 endfunction
reltime功能
如果在编译时提供了+reltime选项,那么将额外提供几个功能:* reltime(): 返回一个更精确地表示时间的值,格式如这样:[1500367300, 966070],是一个列表。
* reltimestr(): 返回reltime()值的文字表示,可以用于显示。
* reltimefloat(): 将reltime()的值转换成浮点数。如:1500367382.226327。
reltime的重要性在于,是我们用于性能测试的重要手段。
例,我们想测量一下MyFunction执行用了多长时间:
let start = reltime() call MyFunction() let seconds = reltimefloat(reltime(start))
有了reltime,我们的随时数函数可以写得更精确一点:
function GetRand2() let l:seed = reltimefloat(reltime()) let l:value = float2nr(l:seed * 100000) % 100 return l:value / 100.0 endfunction
相关文章推荐
- T-SQL: 15 个与日期时间相关的精典语句函数
- 15 个与日期时间相关的精典语句函数
- 15 个与日期时间相关的精典语句函数
- Vim技能修炼教程(16) - 浮点数计算函数
- 15 个与日期时间相关的精典语句函数
- 15 个与日期时间相关的精典语句函数
- 15 个与日期时间相关的精典语句函数
- Vim技能修炼教程(16) - 浮点数计算函数
- 15 个与日期时间相关的精典语句函数
- mysql日期相关函数大全,日期,字符串,Unix时间戳...
- Vim技能修炼教程(4) - 基本功
- MySQL时间日期查询相关函数与方法
- Vim技能修炼教程(3) - 语法高亮进阶
- JS获取时间的相关函数及时间戳与时间日期之间的转换
- Mysql 与日期和时间相关的函数
- Vim技能修炼教程(11) - 代码折叠
- Vim技能修炼教程(14) - 写个ex命令吧
- 【js基础】时间和日期相关操作函数
- MySQL基础教程9 —— 函数之日期和时间函数
- SQLite教程(内置日期和时间函数)