--修改成相当对于服务器时区的时间 function timeStampFromStdTime(str, gettab) local t1 = splitString(str, " ") local t2 = splitString(t1[1], "-") local t3 = splitString(t1[2], ":") --tab表示的是服务器时区的时间 --在用作比较时,需要把令一个时间也转换成服务器时区的时间才可以 local tab = { year = tonumber(t2[1]), month = tonumber(t2[2]), day = tonumber(t2[3]), hour = tonumber(t3[1]), min = tonumber(t3[2]), sec = tonumber(t3[3]) } if gettab == true then return tab end --用本地的os.time获取时间戳 local ts = timeStampFromTimeTable(tab) --os.time(tab) + getLocalTimeZoneSec( ) - g_server_time_zone return ts end 转成TS
时间: 2023-11-28 07:04:37 浏览: 103
这个函数的作用是将一个标准时间字符串转换成对应的时间戳,并且支持转换成服务器时区的时间。如果你需要将一个标准时间字符串转换成时间戳,可以按照以下步骤操作:
1. 使用`splitString`函数将时间字符串拆分成日期和时间两部分。
2. 使用`splitString`函数将日期字符串和时间字符串分别拆分成年月日和时分秒。
3. 将年月日和时分秒转换成一个Lua表,表中包含了这个时间的详细信息。如果需要转换成服务器时区的时间,可以根据服务器时区的时间差调整这个表中的时间值。
4. 使用`timeStampFromTimeTable`函数将这个Lua表转换成对应的时间戳。
以下是修改后的代码:
```
function timeStampFromStdTime(str, gettab)
local t1 = splitString(str, " ")
local t2 = splitString(t1[1], "-")
local t3 = splitString(t1[2], ":")
local tab = { year = tonumber(t2[1]), month = tonumber(t2[2]), day = tonumber(t2[3]), hour = tonumber(t3[1]), min = tonumber(t3[2]), sec = tonumber(t3[3]) }
if gettab == true then
return tab
end
local ts = timeStampFromTimeTable(tab)
return ts
end
function timeStampFromTimeTable(tab)
local ts = os.time(tab)
local utc_offset = os.time() - os.time(os.date("!*t"))
local server_offset = getLocalTimeZoneSec() - g_server_time_zone
ts = ts + server_offset - utc_offset
return ts
end
```
这个函数中,`getLocalTimeZoneSec()`函数是用来获取本地时区和UTC的时间差的。`g_server_time_zone`变量是服务器所在时区和UTC的时间差。在调用`os.time()`函数之前,先使用`os.time(os.date("!*t"))`获取当前UTC时间戳,并计算出本地时区和UTC的时间差,然后再根据服务器时区和UTC的时间差调整时间戳的值。最后返回调整后的时间戳即可。
阅读全文