Lua中的時間戳

2021-09-29 13:32:31 字數 3895 閱讀 9360

實現的功能:

獲取mac os系統的毫秒數

獲取秒數

秒數/毫秒數與日期格式的轉換

知識點:

用lua自帶的函式os.time()獲取秒數

lua自帶的函式只能獲取到秒,要獲取到毫秒,需使用lzmq.timer,或者是socket(兩個都需要使用luarocks安裝)

os.clock返回乙個程式使用cpu時間的乙個近似值

os.date格式化日期:

local zmq_timer = require("lzmq.timer")

local ms = zmq_timer.absolute_time()

print("ms: "..ms)

--milliseconds: 1573537133261.0

local s = os.time()

print("s: "..s)

--second: 1573537133

local time2date = os.date("%x", os.time())

print("time2date: "..time2date)

--time2date: 11/12/19

local date = os.date("%y-%m-%d-%h-%m-%s")

print("date: "..date)

--date: 2019-11-12-13-38-53

function time_stamp_from_ms(t_ms)

local s_from_ms = math.floor(t_ms/1000)

local s_to_ms = 1000 * math.floor(t_ms/1000)

local ms_number = t_ms - s_to_ms

return os.date("%y-%m-%d %h:%m:%s.", s_from_ms)..string.format("%03d", ms_number)

endlocal ms2str = time_stamp_from_ms(ms)

print("ms2timestamp: "..ms2str)

--ms2timestamp: 2019-11-12 13:38:53.261

function time_stamp()

local ms = zmq_timer.absolute_time() -- use lzmq

local s = os.time()

return os.date("%y-%m-%d %h:%m:%s.", s)..string.format("%03d", (ms-s*1000))

endlocal c_ms2str = time_stamp()

print("current_ms_2_timestamp: "..c_ms2str)

--current_ms_2_timestamp: 2019-11-12 13:38:53.262

local socket = require("socket")

local sms = socket.gettime()

print("socket ms: "..sms)

--socket ms: 1573537133.2631

print(os.clock())

--0.005693

os.date()中的時間格式

%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 : day of the month (16) [01-31]

%h : hour, using a 24-hour clock (23) [00-23]

%i : hour, using a 12-hour clock (11) [01-12]

%m : minute (48) [00-59]

%m : month (09) [01-12]

%p : either "am" or "pm" (pm)

%s : second (10) [00-61]

%w : weekday (3) [0-6 = sunday-saturday]

%x : date (e.g., 09/16/98)

%x : time (e.g., 23:48:10)

%y : full year (1998)

%y : two-digit year (98) [00-99]

%% : the character '%'

lua math函式庫有

函式名描述示例

結果pi

圓周率math.pi

3.1415926535898

abs取絕對值

math.abs(-2012)

2012

ceil

向上取整

math.ceil(9.1)

10floor

向下取整

math.floor(9.9)

9max

取引數最大值

math.max(2,4,6,8)

8min

取引數最小值

math.min(2,4,6,8)

2pow

計算x的y次冪

math.pow(2,16)

65536

sqrt

開平方math.sqrt(65536)

256mod

取模math.mod(65535,2)

1modf

取整數和小數部分

math.modf(20.12)

20   0.12

randomseed

設隨機數種子

math.randomseed(os.time())

random

取隨機數

math.random(5,90)

5~90

rad角度轉弧度

math.rad(180)

3.1415926535898

deg弧度轉角度

math.deg(math.pi)

180exp

e的x次方

math.exp(4)

54.598150033144

log計算x的自然對數

math.log(54.598150033144)

4log10

計算10為底,x的對數

math.log10(1000)

3frexp

將引數拆成x * (2 ^ y)的形式

math.frexp(160)

0.625    8

ldexp

計算x * (2 ^ y)

math.ldexp(0.625,8)

160sin

正弦math.sin(math.rad(30))

0.5cos

余弦math.cos(math.rad(60))

0.5tan

正切math.tan(math.rad(45))

1asin

反正弦math.deg(math.asin(0.5))

30acos

反余弦math.deg(math.acos(0.5))

60atan

反正切math.deg(math.atan(1))

45

Lua獲取時間戳ms

程式執行函式,花了比較多時間,怎麼優化,提速。當然是分段,看函式各部分花了多長時間,對於消耗時間較多的地方進行針對性的優化,效果顯著。時間消耗計算,等同於用當前時間點減去過去時間點的時間差。local socket require socket local start time socket.get...

Lua時間戳和日期轉換

os.date y m d h unixtime os.date y m d h 1534435200 2018081700 指定日期的時間戳 os.time 1534435200os.time 時間格式 yyyymmddhhmmss print os.date y m d h m s os.tim...

Python中的時間戳

sublime在對python的支援上有 塊補充功能,即在寫完一些判斷字元如 if或者while之類,會自動出先pass的佔位符,這種佔位符雖然不執行任何動作,但對提示 寫作比較好。另外學習了time模組,time模組是python裡面乙個常用模組,在資料分析中,很多情況下都會用到時間,在pytho...