Lua 获取毫秒ms和微秒

下载c文件编译的so文件:http://download.csdn.net/detail/zhukangle/9766221


Lua自带的os函数,os.time()只取到秒。网上搜索lua 毫秒都是要使用 luasocket,觉得真没那个必要为了一个函数,用一套用不上的东西。试着写了个扩展,代码如下。

C语言:


#include <stdio.h>
#include <sys/time.h>
#include <time.h>
#include <lua.h>
#include <lauxlib.h>

//微秒
static int getmicrosecond(lua_State *L) {
    struct timeval tv;
    gettimeofday(&tv,NULL);
    long microsecond = tv.tv_sec*1000000+tv.tv_usec;
    lua_pushnumber(L, microsecond);
    return 1;
}

//毫秒
static int getmillisecond(lua_State *L) {
    struct timeval tv;
    gettimeofday(&tv,NULL);
    long millisecond = (tv.tv_sec*1000000+tv.tv_usec)/1000;
    lua_pushnumber(L, millisecond);

    return 1;
}


int luaopen_usertime(lua_State *L) {
  luaL_checkversion(L);

  luaL_Reg l[] = {
    {"getmillisecond", getmillisecond},
    {"getmicrosecond", getmicrosecond},
    { NULL, NULL },
  };

  luaL_newlib(L, l);
  return 1;
}

编译命令: cc -g -O2 -Wall -fPIC --shared usertime.c -o usertime.so

Lua调用:


local utime = require "usertime"

local microsecond = utime.getmicrosecond()
local millisecond = utime.getmillisecond()

print('microsecond',microsecond)
print('millisecond',millisecond)
要在Lua获取毫秒级时间戳,可以使用luasocket库来实现。首先,你需要下载luasocket库并将其添加到你的Lua环境中。然后,你可以使用以下代码来获取当前的毫秒级时间戳: ```lua require("socket") local current_time = socket.gettime() * 1000 ``` 这里,我们使用了luasocket提供的`socket.gettime()`函数来获取当前时间的秒级时间戳,然后乘以1000来转换为毫秒级时间戳。`current_time`变量将保存当前的毫秒级时间戳。 请注意,获取毫秒级时间戳需要使用luasocket库,并且在指定日期之前无法获取时间戳,否则将返回`nil` 。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Lua中使用毫秒精度时间的方法](https://blog.csdn.net/liuxing__jacker/article/details/118065458)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Lua 使用 os.time 获取时间戳需谨慎](https://blog.csdn.net/fightsyj/article/details/118156531)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值