2013-12-22 3 views
1

Давайте предположим, что у меня есть следующее напоминание меткиОтметка шаблон

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 

Какой должна быть выше схемы в соответствии с напоминанием временная метка, о которой я упоминал ранее?

ответ

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

1

Вам нужно использовать возможности разбора строк Lua. Попробуйте некоторые из методов, упомянутых в дальнейшем, и если вы все еще есть проблемы, после что конкретно не работает: