--[[
--CurTime为当前时区转换的时间戳
CurTime - SetTimezone = SetTime - CurTimezone
CurTime - SetTime = SetTimezone - CurTimezone
SetTime = CurTime - (SetTimezone - CurTimezone)
--总结:使用当前时区变成的时间戳需要-offset转换成设置时区对应点数的时间戳
例如东八区的0点,转换为东7区的0点,需要-(7*3600 - 8*3600)
--NormalTime为服务器传过来的标准时间戳
NormalTime - CurTimezone = SetTime - SetTimezone
SetTimezone - CurTimezone = SetTime - NormalTime
SetTime = NormalTime + (SetTimezone - CurTimezone)
--总结:标准时间戳需要+offset来得到设置时区对应点数
例如同一时间戳东八区转为8点,东七区为7点,但是按东八区来转,所以+(7*3600 - 8*3600)
注意一些获取当天0点的那些方法,有可能设置时区的当前0点并不是同一天
例如东八区的28号1点,但东七区是27号23点,所以需要加上偏移区获取0点,但获取到的0点也是当前时区的0点的时间戳,只是有可能日不一样
]]
function M:GetTimezoneOffsetSec()
if not self.timezoneOffsetSec then
local curTimeZoneSec = os.difftime(os.time(), os.time(os.date("!*t", os.time())))
local hour,min = math.modf( 7 ) --东7区
local min = min * 100
local setTimeZoneSec = hour * 3600 + min * 60
self.timezoneOffsetSec = setTimeZoneSec - curTimeZoneSec
end
return self.timezoneOffsetSec
end