【invoke】反射调用方法+日期常用格式处理

package com.xiaobing;

import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class GetTime {
    public static String getNewTime(int s){
        long ms = 0;
        SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
        String start_time = sdf.format(new Date());
        System.out.println("开 始 时 间:"+start_time);
        try {
            //s转为ms
            ms = sdf.parse(start_time).getTime()+s*1000;
        } catch (Exception e) {
            e.printStackTrace();
        }
        Date date = new Date(ms);
        System.out.println("时间提前1月:"+sdf.format(date));

        Calendar calendar = Calendar.getInstance();//日历对象
        calendar.setTime(date);//设置当前日期
        calendar.add(Calendar.MONTH, -1);//月份减一
        calendar.add(Calendar.DAY_OF_MONTH, -1);//日减一
        System.out.println("当前延后"+s+"s:"+sdf.format(calendar.getTime()));//输出格式化的日期

        String end_time = sdf.format(new Date());
        long ms2 = 0;
        try {
            ms2 = sdf.parse(end_time).getTime() - sdf.parse(start_time).getTime();
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("end_time and start_time 耗时:"+ms2 +"ms");
        return sdf.format(calendar.getTime());

    }
}

class Test{
    public static void main(String[] args) throws  Exception {
        String className = "com.xiaobing.GetTime";
        String methodName = "getNewTime";
        Class clz = Class.forName(className);
        Object obj = clz.newInstance();
        //获取方法
        Method m = obj.getClass().getDeclaredMethod(methodName, int.class);
        //调用方法
        String  result = (String)m.invoke(obj, 1);
        System.out.println("反射调用方法:"+result);
    }
}
开 始 时 间 :  2021-11-26 11:22:40
时间提前1月:2021-12-27 11:22:41
当 前 延后1s: 2020-11-26 11:22:41
end_time and start_time 耗时:0ms
反射调用方法: 2020-11-26 11:22:41

 

posted @ 2021-11-26 11:31  o小兵o  阅读(497)  评论(0编辑  收藏  举报