口语时间“今天”“今天下午”“晚上八点”转成标注时间(文本)

以下代码把口语时间转化成标准时间:

public static String kouyuShijian(String shijian) {
    //10分钟后
    //下午两点
    //明天早上
    //明天早上10点
    //这个周五早上11点
    //每天早上9点
    //每个周五早上1点
    //每个月15号早上1点
    //每天
    int zhi=0;
    String canshu="";
    String fanhui="";
    if (shijian.indexOf("以后")>-1)
    {
        shijian=shijian.replace("以后", "后");
    }
    else if (shijian.indexOf("以前")>-1)
    {
        shijian=shijian.replace("以前", "前");
    }
    if (shijian.indexOf("的")>-1)
    {
        shijian=shijian.replace("的", "");
    }
    if (shijian.indexOf("个")>-1)
    {
        shijian=shijian.replace("个", "");
    }
    if (shijian.indexOf("整")>-1)
    {
        shijian=shijian.replace("整", "");
    }
    if (shijian.indexOf("正")>-1)
    {
        shijian=shijian.replace("正", "");
    }
    if (shijian.indexOf("凌晨")>-1)
    {
        shijian=shijian.replace("凌晨", "早上");
    }
    if (shijian.indexOf("傍晚")>-1)
    {
        shijian=shijian.replace("傍晚", "晚上");
    }
    if (shijian.indexOf("时")>-1 || shijian.indexOf("小时")<0)
    {
        shijian=shijian.replace("时", "点");
    }
    if (shijian.indexOf("后") > 0) {
        if (shijian.indexOf("分钟后") > 0) {
            String shuzi = shijian.substring(0, shijian.indexOf("分钟后"));
            shuzi = Shuzizhuanxie.chineseNumToArabicNum(shuzi);
            Pattern pattern = Pattern.compile("[0-9]*");
            if (pattern.matcher(shuzi).matches()) {
                zhi = Integer.parseInt(shuzi);
            }
            canshu = "minute";
        } else if (shijian.indexOf("小时后") > 0) {
            String shuzi = shijian.substring(0, shijian.indexOf("小时后"));
            shuzi = Shuzizhuanxie.chineseNumToArabicNum(shuzi);
            Pattern pattern = Pattern.compile("[0-9]*");
            if (pattern.matcher(shuzi).matches()) {
                zhi = Integer.parseInt(shuzi);
            }
            canshu = "hour";
        } else if (shijian.indexOf("天后") > 0) {
            String shuzi = shijian.substring(0, shijian.indexOf("天后"));
            shuzi = Shuzizhuanxie.chineseNumToArabicNum(shuzi);
            Pattern pattern = Pattern.compile("[0-9]*");
            if (pattern.matcher(shuzi).matches()) {
                zhi = Integer.parseInt(shuzi);
            }
            canshu = "day";
        } else if (shijian.indexOf("秒后") > 0) {
            String shuzi = shijian.substring(0, shijian.indexOf("秒后"));
            shuzi = Shuzizhuanxie.chineseNumToArabicNum(shuzi);
            Pattern pattern = Pattern.compile("[0-9]*");
            if (pattern.matcher(shuzi).matches()) {
                zhi = Integer.parseInt(shuzi);
            }
            canshu = "secont";
        } else if (shijian.indexOf("年后") > 0) {
            String shuzi = shijian.substring(0, shijian.indexOf("年后"));
            shuzi = Shuzizhuanxie.chineseNumToArabicNum(shuzi);
            Pattern pattern = Pattern.compile("[0-9]*");
            if (pattern.matcher(shuzi).matches()) {
                zhi = Integer.parseInt(shuzi);
            }
            canshu = "year";
        } else if (shijian.indexOf("月后") > 0) {
            String shuzi = shijian.substring(0, shijian.indexOf("月后"));
            shuzi = Shuzizhuanxie.chineseNumToArabicNum(shuzi);
            Pattern pattern = Pattern.compile("[0-9]*");
            if (pattern.matcher(shuzi).matches()) {
                zhi = Integer.parseInt(shuzi);
            }
            canshu = "month";
        } else if (shijian.indexOf("周后") > 0) {
            String shuzi = shijian.substring(0, shijian.indexOf("周后"));
            shuzi = Shuzizhuanxie.chineseNumToArabicNum(shuzi);
            Pattern pattern = Pattern.compile("[0-9]*");
            if (pattern.matcher(shuzi).matches()) {
                zhi = Integer.parseInt(shuzi);
            }
            canshu = "week";
        }
        fanhui=gettime(canshu,zhi, true);
    }
    else if (shijian.indexOf("点") >0) {
        int xiaoshi=0;
        int fenzhong=0;
        int miao=0;
        String zaowan="";
        int weizhi1=0;
        int weizhi2=0;
        int weizhi3=shijian.indexOf("分");
        int weizhi4=shijian.indexOf("秒");
        if (shijian.indexOf("早上") > -1 && shijian.indexOf("点") >2 ) {
            zaowan="早上";
            weizhi1=shijian.indexOf("早上")+2;
            weizhi2=shijian.indexOf("点");
        }
        else if (shijian.indexOf("中午") > -1 && shijian.indexOf("点") >2 ) {
            zaowan="中午";
            weizhi1=shijian.indexOf("中午")+2;
            weizhi2=shijian.indexOf("点");
        }
        else if (shijian.indexOf("下午") > -1 && shijian.indexOf("点") >2 ) {
            zaowan="下午";
            weizhi1=shijian.indexOf("下午")+2;
            weizhi2=shijian.indexOf("点");
        }
        else if (shijian.indexOf("晚上") > -1 && shijian.indexOf("点") >2 ) {
            zaowan="晚上";
            weizhi1=shijian.indexOf("晚上")+2;
            weizhi2=shijian.indexOf("点");
        }
        else if (shijian.indexOf("天") > -1 && shijian.indexOf("点") >0 ) {
            weizhi1=shijian.indexOf("天")+1;
            weizhi2=shijian.indexOf("点");
        }
        else if (shijian.indexOf("点") >0 ) {
            weizhi1=0;
            weizhi2=shijian.indexOf("点");
        }
        String shuzi = shijian.substring(weizhi1, weizhi2);
        System.out.println(shuzi);
        shuzi = Shuzizhuanxie.chineseNumToArabicNum(shuzi);
        Pattern pattern = Pattern.compile("[0-9]*");
        if (pattern.matcher(shuzi).matches()) {
            xiaoshi = Integer.parseInt(shuzi);
        }
        if (zhi==24){
            xiaoshi=0;
        }
        else if (zhi>24){
            xiaoshi=0;
        }
        else if(zhi<12 &&((shijian.indexOf("中午")>-1 || shijian.indexOf("下午")>-1 || shijian.indexOf("晚上")>-1)))
        {
            xiaoshi=xiaoshi+12;
        }
        String fenmiao = shijian.substring(weizhi2+1);
        if (fenmiao.equals("半")){
            fenzhong=30;
        }
        else if (weizhi3 >shijian.indexOf("点"))
        {
            String fen=shijian.substring(weizhi2+1, weizhi3);
            fen = Shuzizhuanxie.chineseNumToArabicNum(fen);
            if (pattern.matcher(fen).matches()) {
                fenzhong = Integer.parseInt(fen);
            }
        }
        else if (!TextUtils.isEmpty(shijian.substring(weizhi2+1)))
        {
            String fen=shijian.substring(weizhi2+1);
            fen = Shuzizhuanxie.chineseNumToArabicNum(fen);
            if (pattern.matcher(fen).matches()) {
                fenzhong = Integer.parseInt(fen);
            }
        }

        if (weizhi3>0 && weizhi4 >weizhi3)
        {
            String mi=shijian.substring(weizhi3+1, weizhi4);
            mi = Shuzizhuanxie.chineseNumToArabicNum(mi);
            if (pattern.matcher(mi).matches()) {
                miao = Integer.parseInt(mi);
            }
        }
        else if (weizhi3>0 && !TextUtils.isEmpty(shijian.substring(weizhi3+1)))
        {
            String mi=shijian.substring(weizhi3+1);
            mi = Shuzizhuanxie.chineseNumToArabicNum(mi);
            if (pattern.matcher(mi).matches()) {
                miao = Integer.parseInt(mi);
            }
        }
        if(miao>59)
        {
            miao=0;
            fenzhong=fenzhong+1;
        }
        if(fenzhong>59)
        {
            fenzhong=0;
            xiaoshi=xiaoshi+1;
        }
        if (xiaoshi>23)
        {
            xiaoshi=0;
        }
        fanhui=xiaoshi+":"+fenzhong+":"+miao;
        String day="";
        if (shijian.indexOf("今天")==0){
            day=getRiqi("今天");
        }
        else if (shijian.indexOf("明天")==0){
            day=getRiqi("明天");
        }
        else if (shijian.indexOf("后天")==0){
            day=getRiqi("后天");
        }
        else if (shijian.indexOf("大后天")==0){
            day=getRiqi("大后天");
        }
        else if (shijian.indexOf("大大后天")==0){
            day=getRiqi("大大后天");
        }
        else{
            day=getRiqi("今天");
        }
        fanhui=day +" "+fanhui;
    }

    return fanhui;
}

//输入结果:2024年9月11日 11:45:39

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值