Datetime Lua-将XML日期时间转换为UTC时间戳

Datetime Lua-将XML日期时间转换为UTC时间戳,datetime,lua,timestamp,datetime-conversion,Datetime,Lua,Timestamp,Datetime Conversion,我对lua没有太多经验,无法完成一项简单的(我认为)任务: 给定一个包含时间戳(从XML文件解析)的字符串,如何使用lua脚本将其转换为UTC格式的时间戳 my_date = "2019-11-21T22:35:03.332+02:00" 基本上,我想编写一个函数/脚本,当传递这样一个字符串时,我将返回一个空字符串(如果无法转换)或UTC格式的时间戳(YYYY-MM-DD HH:MS:SS) 在my_date中,最后一部分…+02:00表示(本地)时间比UTC提前2小时 有几种方法可以实现您的

我对lua没有太多经验,无法完成一项简单的(我认为)任务:

给定一个包含时间戳(从XML文件解析)的字符串,如何使用
lua脚本将其转换为UTC格式的时间戳

my_date = "2019-11-21T22:35:03.332+02:00"
基本上,我想编写一个函数/脚本,当传递这样一个字符串时,我将返回一个空字符串(如果无法转换)或UTC格式的时间戳
(YYYY-MM-DD HH:MS:SS)

my_date
中,最后一部分…+02:00表示(本地)时间比UTC提前2小时


有几种方法可以实现您的目标。这里我向您展示如何使用和获取字符串元素。剩下的是简单的数学

-- our input
local my_date = "2019-11-21T22:35:03.332+02:00"
-- we can just keep anything befor T as our date
local day = my_date:match("(.*)T")
-- now parse the UTC offset
local offsetH, offsetM = my_date:match("([%+%-]%d%d):(%d%d)")

-- apply sign to our minute offset
offsetM = offsetM * (tonumber(offsetH) > 0 and 1 or -1)

-- get time components
local h, m, s, ms = my_date:match("(%d%d):(%d%d):(%d%d).(%d%d%d)")

-- fix our and minute to get UTC
h = h - offsetH
m = m - offsetM
-- round seconds as we have microseconds in our input
s = math.floor(s + ms / 1000 + .5)

-- now put everything together with leading zeros
local my_utc_date = string.format("%s %02d:%02d:%02d", day, h, m, s)

print(my_utc_date)

你有自己的想法吗?你试过什么吗?我可以推荐fiverr吗?看起来像是一个“请为我编码这个特定的功能,免费”的请求,我。。。看起来你并不是在试图学习任何东西,你只是想要解决方案,而且有一些网站可以提供这个解决方案。。。