lua os库提供了简单的跟操作系统有关的功能

1.os.clock()

返回程序所运行使用的时间

local nowTime = os.clock()
print("now time is ",nowTime)
local s = 0
for i = 1,100000000 do
s =s+i
end
spendTime = os.clock() - nowTime
print(string.format("Spend time is : %.2f\n", spendTime))
-- now time is 0.002841
-- Spend time is : 0.66

2.os.date ([format [, time]])

用来格式化时间戳为可读时间,time为可选时间戳,省略时取当下


local now = os.date()
print("current time is ",now)
--current time is Mon Nov 4 09:00:49 2019 local now = os.date("%Y-%m-%d %H:%M:%S")
print("now time is ",now)
-- now time is 2019-11-04 09:00:49 -- %a abbreviated weekday name (e.g., Wed)
-- %A full weekday name (e.g., Wednesday)
-- %b abbreviated month name (e.g., Sep)
-- %B full month name (e.g., September)
-- %c date and time (e.g., 09/16/98 23:48:10)
-- %d 一个月里的几号[01–31]
-- %H 24小时[00–23]
-- %I 12小时[01–12]
-- %j 一年中的第几天[001–366]
-- %M 分[00–59]
-- %m 月份[01–12]
-- %p am(上午),pm(下午)
-- %S 秒[00–60]
-- %w 星期几[0–6 = 星期天–星期六]
-- %x date (e.g., 09/16/98)
-- %X time (e.g., 23:48:10)
-- %y two-digit year (98) [00–99]
-- %Y 年(1998)
-- %% the character ‘%’ local now = os.date("%Y-%m-%d %H:%M:%S")
print("now time is ",now)
--now time is 2019-11-04 09:13:47 local year = string.sub(now,1,4)
local month = string.sub(now,6,7)
local day = string.sub(now,9,10)
local hour = string.sub(now,12,13)
local minute = string.sub(now,15,16)
local second = string.sub(now,18,19) print("now year is ",year)
print("now month is ",month)
print("now day is ",day)
print("now hour is ",hour)
print("now minute is ",minute)
print("now second is ",second) --now year is 2019
--now month is 11
--now day is 04
--now hour is 09
--now minute is 13
--now second is 47

其中"*t":

将返一个带year(4位),month(1-12), day (1--31), hour (0-23), min (0-59), sec (0-61), wday (星期几, 星期天为1), yday (年内天数), and isdst (是否为日光节约时间true/false)的带键名的表

local now = os.date("*t")
for k ,v in pairs(now) do
print (k ,v )
end
--输出如下
wday 2
sec 3
hour 9
month 11
year 2019
yday 308
min 6
day 4
isdst false

3.os.time ([table])

默认获取当前时间戳(1970到现在的秒数),也可以指定table参数


local now = os.date("%Y-%m-%d %H:%M:%S")
print("now time is ",now)
--now time is 2019-11-04 09:27:13 local year = string.sub(now,1,4)
local month = string.sub(now,6,7)
local day = string.sub(now,9,10)
local hour = string.sub(now,12,13)
local minute = string.sub(now,15,16)
local second = string.sub(now,18,19) print("now year is ",year)
print("now month is ",month)
print("now day is ",day)
print("now hour is ",hour)
print("now minute is ",minute)
print("now second is ",second) --now year is 2019
--now month is 11
--now day is 04
--now hour is 09
--now minute is 27
--now second is 13 --获取7天前的时间
ta = {
year=year,
month=month,
day=day-7,
hour=hour,
min=minute,
sec=second
}
--2018-05-02 09:50:57
local t = os.date("%Y-%m-%d %H:%M:%S", os.time(ta))
print ("the day before 7days time",t)
--the day before 7days time 2019-10-28 09:27:13 --获取本年2月份的天数
--3月份开头减去1天就是2月份的最后一天
ta = {
year=year,
month=3,
day=0,
} --28
local days = os.date("%d", os.time(ta))
print ("二月份的天数",days)
--二月份的天数 28

4.**os.difftime (t2, t1)****

返回t1到t2相差的秒数

t1 = os.time();
print("t1 time is ",t1)
--t1 time is 1572830412 for i = 0, 10000000 do
os.time();
end
t2 = os.time();
print(t2 - t1);
--1
print(os.difftime(t2, t1));
--1.0

5.os.execute ([command])

  相当于system 函数,返回执行结果,可以执行shell 语句
os.execute("lua -v")
--Lua 5.3.5 Copyright (C) 1994-2018 Lua.org, PUC-Rio

6.os.exit

  相当于C的exit函数,终止主程序,code为返回值

  ```lua
function func_testexit()
print("lua --> func_testexit start"); io.read(); os.exit(0); --==>os.exit() 用法 print("lua --> func_testexit end"); io.read();
end
``` ```objective-c
lua_State *L = lua_open();
luaL_openlibs(L); printf("c++ --> before call func_testexit\n"); luaL_dofile(L,"exittest.lua"); // 加载执行lua文件 lua_getglobal(L, "func_testexit"); // 函数入栈
lua_pcall(L, 0, 0, 0); // 打印信息 printf("c++ --> after call func_testexit\n"); lua_close(L); // 关闭lua环境
``` ```lua
--输出结果为:
-- c++ --> before call func_testexit
-- lua --> func_testexit start
``` 总结: - 需要注意的是,`os.exit()`不仅仅会退出lua运行环境,连宿主程序也会退出,代码中的`io.read();`仅仅为了可以看到打印信息,否则宿主程序直接退出就什么也看不到了。 - 我们可以发现代码`print("lua --> func_testexit end");`和`printf("c++ --> after call func_testexit\n");`是无论如何也执行不到的。 - 利用`os.exit()`可以退出宿主程序,我们可以在lua解释器中使用这个函数已退出解释器

其中这个函数的实现源码,其实就是调用了c语言的exit():

static int os_exit (lua_State *L) {
exit(luaL_optint(L, 1, EXIT_SUCCESS));
} //其中c语言中有如下定义:
/* Definition of the argument values for the exit() function */
#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1

7.os.getenv (varname)

功能:返回当前进程的环境变量varname的值,若变量没有定义时返回nil
print(os.getenv("HOME"))
print(os.getenv("TEMP")) --/Users/jason
--nil

8.os.remove (filename)

删除文件或目录,若函数调用失败则返回nil和错误信息

9.os.rename (oldname, newname)

重命名文件或目录,失败返回nil以及错误信息

10.os.tmpname()

 返回具有可用于临时文件的文件名的字符串。该文件必须在使用前打开,并且在不需要时删除。

 io.tmpfile()产生的临时文件程序结束后会自动删除

11.os.setlocale (locale [, category])

 解释:设置程序的当前区域,函数返回设置以后该项最新的值,如果失败则返回`nil`。

  主要用于设定不同区域,不同语言习惯

  参数:两个参数均可省略,但具体含义不同。

  locale:表示一个指定当前设置区域的字串,有几种特殊形式如下

  - "":一个空字串,当前设置被视为本地设置
- "C":当前设置被视为标准C设置
- nil:返回category指示设置名的当前值 category:一个描述要更改的设置名,实际上就是制定一个分类的名字,分类如下 - all:默认选项,包含下述所用分类。
- collate :影响C语言函数strcoll和strxfrm
- ctype:影响字符处理函数和多行字符处理函数
- monetary:影响C语言函数localeconv返回的货币格式化信息
- numeric:影响格式化输入输出字符中的小数点符号
- time:影响C语言函数strftime
  常用语言区域:

  | 语言缩写 | 语言种类     | 语言代码 |
| -------- | ------------ | -------- |
| chs | 简体中文 | 0804 |
| cht | 繁体中文 | 0404 |
| jpn | 日文 | 0011 |
| kor | 韩文 | 0012 |
| dan | 丹麦文 | 0006 |
| deu | 德文 | 0007 |
| eng | 国际英文 | 0809 |
| enu | 英文 | 0409 |
| esp | 西班牙文 | 000A |
| fin | 芬兰文 | 000B |
| fra | 法文(标准) | 040C |
| frc | 加拿大法文 | 0C0C |
| ita | 意大利文 | 0010 |
| nld | 荷兰文 | 0013 |
| nor | 挪威文 | 0014 |
| plk | 波兰文 | 0015 |
| ptb | 巴西葡萄牙文 | 0416 |
| ptg | 葡萄牙文 | 0816 |
| rus | 俄文 | 0019 |
| sve | 瑞典文 | 001D |
| tha | 泰文 | 001E |

Lua 学习之基础篇五<Lua OS 库>的更多相关文章

  1. Lua 学习之基础篇七<Lua Module,Package介绍>

    Lua 之Module介绍 包管理库提供了从 Lua 中加载模块的基础库. 只有一个导出函数直接放在全局环境中: [require]. 所有其它的部分都导出在表 package 中. require ...

  2. Lua 学习之基础篇四<Lua table(表)>

    table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组.字典等. Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil. Lua ta ...

  3. Lua 学习之基础篇二<Lua 数据类型以及函数库 汇总>

    引言 前面讲了运算符,这里主要对Lua的数据处理相关的数据类型和函数库进行总结归纳,后面会再接着单独分开讲解具体使用. 首先因为Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值. 值可以存储 ...

  4. Lua 学习之基础篇十<Lua 常见的语法规则>

    下面讲一些lua 常见的用法和规则,可以为学习理解lua带来帮助,最后附上的部分是lua的基本操作,基本包含所有常用语法语句. 1. if判断 lua把 nil 和false 视为"假&qu ...

  5. Lua 学习之基础篇一<Lua 运算符>

    引言 由于刚接触lua,个人觉得接触一门新语言,就要一定要对基础的部分做一个快速了解. 于是参考网上相关资料吸收并整理下来作为笔记,模糊的时候用来回顾一下. 这些部分基本都是经过自己手动测试梳理过,没 ...

  6. Lua 学习之基础篇九<Lua 协同程序(Coroutine)>

    引言 讲到协程,首先来介绍一下线程和协程的区别 lua协程和多线程 相同之处:拥有自己独立的桟.局部变量和PC计数器,同时又与其他协程共享全局变量和其他大部分东西 不同之处:一个多线程程序可以同时运行 ...

  7. Lua 学习之基础篇六<Lua IO 库>

    引言 I/O 库提供了两套不同风格的文件处理接口. 第一种风格使用隐式的文件句柄: 它提供设置默认输入文件及默认输出文件的操作, 所有的输入输出操作都针对这些默认文件. 第二种风格使用显式的文件句柄. ...

  8. Lua 学习之基础篇八<Lua 元表(Metatabble)&&继承>

    讲到元表,先看一段table的合并动作. t1 = {1,2} t2 = {3,4} t3 = t1 + t2 attempt to perform arithmetic on a table val ...

  9. Lua 学习之基础篇三<Lua 字符串操作>

    Lua字符串可以使用以下三种方式表示: 单引号间的一串字符. 双引号间的一串字符. [[和]]间的一串字符. string = [["Lua"]] print("字符串 ...

随机推荐

  1. Shiro加盐加密

    接本人的上篇文章<Shiro认证.角色.权限>,这篇文章我们来学习shiro的加盐加密实现 自定义Realm: package com.czhappy.realm; import org. ...

  2. 搭建一个超好用的 cmdb 系统

    10 分钟为你搭建一个超好用的 cmdb 系统 CMDB 是什么,作为 IT 工程师的你想必已经听说过了,或者已经烂熟了,容我再介绍一下,以防有读者还不知道.CMDB 的全称是 Configurati ...

  3. html5 table的表头固定的HTML代码

    table的表头固定的HTML代码 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...

  4. 可能是一篇(抄来的)min25学习笔记

    可能是一篇(抄来的)min25学习笔记 一个要求很多的积性函数 我们考虑有一个积性函数,这个函数满足可以快速计算质数处的值 且质数可以写成一个多项式的形式--而且这个多项式如果强行套在合数上,满足积性 ...

  5. JavaIO -- Reader 和 Writer

    一.简介 设计Reader和Writer继承层次结构主要是为了国际化.InputStream和OutStream流继承层次结构仅支持8位字节流,并不能很好的处理16位的Unicode字符.由于Unic ...

  6. C++程序设计学习-第2章

    第二章 变量与基本类型 1.基本内置类型 C++定义了一套包括算术类型和空类型在内的基本数据类型 算术类型:整型和浮点型,包括带符号类型(signed)和无符号类型(unsigned),带符号类型可以 ...

  7. Python之装饰器笔记

    概述: 用于管理和增强函数和类行为的代码 提供一种在函数或类定义中插入自动运行代码的机制 特点  更明确的语法.更高的代码可维护性.更好的一致性 编写 函数基础: 将函数赋给变量.将函数作为参数传递. ...

  8. 串口(USART)框图的讲解

    STM32 的 USART 简介 通用同步异步收发器(Universal Synchronous Asynchronous Receiver and Transmitter)是一个串行通信设备,可以灵 ...

  9. 【规律】Parentheses

    Parentheses 题目描述 Dave loves strings consisting only of '(' and ')'. Especially, he is interested in ...

  10. 三种redis数据导出导入方式

    推荐博客链接:https://www.cnblogs.com/hjfeng1988/p/7146009.html https://blog.csdn.net/qq_14945847/article/d ...