songtao 发表于 2016-5-25 13:14:35

请教如何用lua把中文的时间转化为数字的秒?

本帖最后由 songtao 于 2016-5-25 05:17 AM 编辑

只在论坛中找到了把中文数字转化为阿拉伯数字的方法。
但是如何转化中文的时间呢?
如题,比如:
uptime
北大侠客行已经执行了二天十六小时二十六分九秒。

再者
jobquery
│[主]萧峰任务          仍需一分四秒才能接到下个任务。                              │

感谢!

北大侠客行MUD,中国最好的MUD

shrimps 发表于 2016-5-25 14:16:55

function parseTime(strTime)
        local strMode = "(%d+)-(%d+)-(%d+)%s*(%d+):(%d+):(%d+)"
        local pos, len, year, month, day, hour, min, sec = string.find(strTime, strMode)
        local time = {}
        time.year = tonumber(year) or 1970
        time.month = tonumber(month) or 1
        time.day = tonumber(day) or 1
        time.hour = tonumber(hour) or 0
        time.min = tonumber(min) or 0
        time.sec = tonumber(sec) or 0

        function time.tostring ()
                return time.year.."-"..time.month.."-"..time.day.." "..time.hour..":"..time.min..":"..time.sec
        end

        return time
end

hypnos 发表于 2016-5-25 14:24:05

回复 2# shrimps


    lua高手~膜拜yct23yct23yct23

acdd 发表于 2016-5-25 14:46:26

本帖最后由 acdd 于 2016-5-25 03:18 PM 编辑

function ZhuanALaBoShuZi(MeiYouXie)
    --中文转阿拉伯数字,好象论坛上有,所以偶木有写。。。
end

function DuoShao(RiQi, DanWeiMingCheng)
    local WeiZhi, ZhongWenShuZi;
   
    WeiZhi = string.find(RiQi, DanWeiMingCheng);
    if (WeiZhi == nil) then
      return RiQi, 0;
    end

    ZhongWenShuZi = string.sub(RiQi, 1, WeiZhi - 1);
    RiQi = string.sub(RiQi, WeiZhi + string.len(DanWeiMingCheng));

    return RiQi, ZhuanALaBoShuZi(ZhongWenShuZi);
end

function ZhuanHuan(RiQi)
    local Miao, DanWeiMingCheng, DanWeiShuZhi, MeiDanWeiMiaoShu;
    local i;
   
    DanWeiMingCheng = {"天", "小时", "分", "秒"};
    --不能转带年和月的。偶不会写。。
    MeiDanWeiMiaoShu = {3600 * 24, 3600, 60, 1}
    Miao = 0;
    for i = 1, #DanWeiMingCheng do
      RiQi, DanWeiShuZhi = DuoShao(RiQi, DanWeiMingCheng);
      Miao = Miao + DanWeiShuZhi * MeiDanWeiMiaoShu;
    end

    return Miao;
end

print(ZhuanHuan("二天十六小时二十六分九秒")) -- 输出的是231969,貌似是对的。。

songtao 发表于 2016-5-26 08:22:08

本帖最后由 songtao 于 2016-5-26 12:29 AM 编辑

我特别喜欢二楼的简洁,特别喜欢四楼的风格。
非常感谢。(二楼的没看懂,不知道怎么触发。)
三楼需要 @futa酱 评论。

creat 发表于 2016-5-26 21:42:13

只在论坛中找到了把中文数字转化为阿拉伯数字的方法。
但是如何转化中文的时间呢?
如题,比如:
uptime ...
songtao 发表于 2016-5-25 05:14 AM http://www.pkuxkx.net/forum/images/common/back.gif


    我是觉得你这个问题提得比较不容易理解
如果按我个人的理解的话,把你需要的中文数字提取出来转成阿拉伯数字然后放进相应的位置就好了吧?
比如
北大侠客行已经执行了二天十六小时二十六分九秒。
local _,_,day,hour,min,sec=string.find ("北大侠客行已经执行了二天十六小时二十六分九秒。","北大侠客行已经执行了(%S+)天(%S+)小时(%S+)分(%S+)秒。")
再者
jobquery
│[主]萧峰任务          仍需一分四秒才能接到下个任务。
local _,_,min,sec=string.find ("│[主]萧峰任务          仍需一分四秒才能接到下个任务。","仍需(%S+)分(%S+)秒才能接到下个任务。")
页: [1]
查看完整版本: 请教如何用lua把中文的时间转化为数字的秒?