Предположим, у меня есть следующая отметка времени напоминания

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
Mustafa 22 Дек 2013 в 16:34

2 ответа

Лучший ответ

Вот ответ, и функция действительно работает нормально

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
Mustafa 23 Дек 2013 в 04:26

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

1
Community 23 Май 2017 в 11:50