时间戳模式

时间:2013-12-22 12:34:17

标签: lua timestamp corona

我们假设我有以下提醒时间戳

local reminder_timestamp = "2013-12-13T00:00:00+01:00"

我正在使用以下函数以UTC返回时间

local function makeTimeStamp(dateString)
      local pattern = "(%d+)%-(%d+)%-(%d+)%a(%d+)%:(%d+)%:([%d%.]+)([Z%p])(%d%d)%:?(%d%d)"
      local year, month, day, hour, minute, seconds, tzoffset, offsethour, offsetmin = dateString:match(pattern)
      local timestamp = os.time( {year=year, month=month, day=day, hour=hour, min=minute, sec=seconds} )
      local offset = 0
      if ( tzoffset ) then
        if ( tzoffset == "+" or tzoffset == "-" ) then  -- we have a timezone!
          offset = offsethour * 60 + offsetmin
          if ( tzoffset == "-" ) then
            offset = offset * -1
          end
          timestamp = timestamp + offset

        end
      end
  return timestamp
end

上面的模式应该与我之前提到的提醒时间戳相匹配?

2 个答案:

答案 0 :(得分:1)

您需要使用Lua的字符串解析功能。尝试下面提到的一些技巧,如果您仍有问题,请专门发布不起作用的内容:

答案 1 :(得分:1)

这是答案,功能实际上可以正常工作

pattern = "(%d+)%-(%d+)%-(%d+)%a(%d+)%:(%d+)%:([%d%.]+)([Z%p])(%d%d)%:?(%d%d)"

reminder_timestamp = "2013-12-23T08:00:00+01:00"

local year, month, day, hour, minute, seconds, tzoffset, offsethour, offsetmin = reminder_timestamp:match(pattern)

资源:http://www.lua.org/manual/5.1/manual.html#5.4.1