You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lua设备时间格式转换求助:将DD-MON-YY/HH.MM转为ISO8601格式

解决Lua日期时间格式转换问题

你需要先解析原始的日期和时间格式,再重新组装成目标的ISO 8601格式。以下是修改后的代码:

-- 定义月份缩写到数字的映射表
local month_map = {
    JAN = "01", FEB = "02", MAR = "03", APR = "04",
    MAY = "05", JUN = "06", JUL = "07", AUG = "08",
    SEP = "09", OCT = "10", NOV = "11", DEC = "12"
}

-- 获取原始日期和时间值
local raw_date = self.value['raindate'].value
local raw_time = self.value['raintime'].value

-- 解析日期:提取日、月份缩写、两位年份
local day, mon_abbr, year_2dig = string.match(raw_date, "(%d+)-(%u+)-(%d+)")
-- 补全年份为4位,这里默认处理2000年后的年份,若需兼容更早年份可补充判断逻辑
local year_4dig = "20" .. year_2dig
-- 转换月份缩写为两位数字
local mon_num = month_map[mon_abbr]

-- 处理时间:替换点为冒号,补全秒、微秒和时区标识
local formatted_time = string.gsub(raw_time, "%.", ":") .. ":00.000000Z"

-- 拼接成目标格式
value = string.format("%s-%s-%sT%s", year_4dig, mon_num, day, formatted_time)

代码说明:

  • 月份映射表:将设备返回的英文月份缩写转换为标准两位数字,保证格式统一
  • 日期解析:通过string.match提取日期的日、月、年片段,补全年份为4位格式
  • 时间处理:把时间中的.替换为:,追加秒、微秒部分和时区标识Z
  • 最终拼接:按照YYYY-MM-DDTHH:MM:SS.ffffffZ的标准格式组合所有部分

测试示例:输入07-NOV-23和16.30,会输出2023-11-07T16:30:00.000000Z,完全符合预期要求。

内容的提问来源于stack exchange,提问作者vishnu anand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 21:57:36