北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 6532|回复: 5

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

[复制链接]
发表于 2016-5-25 13:14:35 | 显示全部楼层 |阅读模式
本帖最后由 songtao 于 2016-5-25 05:17 AM 编辑

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

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

感谢!

北大侠客行MUD,中国最好的MUD
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 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
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2016-5-25 14:24:05 | 显示全部楼层
回复 2# shrimps


    lua高手~膜拜
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 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,貌似是对的。。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2016-5-26 08:22:08 | 显示全部楼层
本帖最后由 songtao 于 2016-5-26 12:29 AM 编辑

我特别喜欢二楼的简洁,特别喜欢四楼的风格。
非常感谢。(二楼的没看懂,不知道怎么触发。)
三楼需要 @futa酱 评论。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2016-5-26 21:42:13 | 显示全部楼层
只在论坛中找到了把中文数字转化为阿拉伯数字的方法。
但是如何转化中文的时间呢?
如题,比如:
uptime ...
songtao 发表于 2016-5-25 05:14 AM



    我是觉得你这个问题提得比较不容易理解
如果按我个人的理解的话,把你需要的中文数字提取出来转成阿拉伯数字然后放进相应的位置就好了吧?
比如
北大侠客行已经执行了二天十六小时二十六分九秒。

  1. local _,_,day,hour,min,sec=string.find ("北大侠客行已经执行了二天十六小时二十六分九秒。","北大侠客行已经执行了(%S+)天(%S+)小时(%S+)分(%S+)秒。")
复制代码
再者
jobquery
│[11][主]萧峰任务          仍需一分四秒才能接到下个任务。

  1. local _,_,min,sec=string.find ("│[11][主]萧峰任务          仍需一分四秒才能接到下个任务。","仍需(%S+)分(%S+)秒才能接到下个任务。")
复制代码
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-28 09:17 AM , Processed in 0.010005 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表