菜鸟笔记
提升您的技术认知

java时间常用操作工具类-ag真人游戏

小刘整理了java中对时间的常用操作,封装了几种方法,简单方便,开箱即用。时间转字符串格式,字符串转时间,以及过去和未来的日期。除此之外,还新增了时间戳之差计算时分秒天的具体方案。

    public static void main(string[] args) {
        system.out.println("过去七天的日期:" pastdate(7,calendar.day_of_year,"yyyy-mm-dd"));
        system.out.println("过去一年的日期:" pastdate(1,calendar.year,"yyyy-mm-dd"));
        date date = new date();
        system.out.println("时间戳转日期:" timestamptodate(date.gettime()));
        string str = datetostr(date, "yyyy-mm-dd hh:mm:ss");
        system.out.println("日期转字符串日期;" str);
        system.out.println("字符串日期转日期" strtodate(str,"yyyy-mm-dd hh:mm:ss"));
        system.out.println("校验是否是时间:" validdate("2023-23.32"));
     }

    public static void main(string[] args) {
        string s="2023-11-20 15:10:00";
        date start = strtodate(s, "yyyy-mm-dd hh:mm:ss");
        string end="2023-11-20 15:20:30";
        date endt = strtodate(end, "yyyy-mm-dd hh:mm:ss");
        string along = durationtime(start,endt);
        system.out.println(s);
        system.out.println(end);
        system.out.println(along);
    }

/**获取过去日期 之后【】-> 
     * 年月日时分秒:yyyy-mm-dd hh:mm:ss
     * 年月日:yyyy-mm-dd
     * @param past 过去几个
     * @param unit 单位  day_of_year【天】week_of_year【周】 month【月】
     * @param pattern
     * @return
     */
    public static string pastdate(integer past,integer unit,string pattern) {
        calendar calendar = calendar.getinstance();
        calendar.set(unit, calendar.get(unit) - past);
        date today = calendar.gettime();
        simpledateformat format = new simpledateformat(pattern);
        string result = format.format(today);
        return result;
    }

    /**
     * 时间戳转换为时间
     * 10位为秒级时间戳
     * 13位为毫秒级时间戳
     * @param time
     * @return
     */
    public static date timestamptodate(long time){
        date date = new date(time.tostring().length() > 10 ? time : time * 1000l);
        return date;
    }
    /**
     * 获取时间格式化
     * 年月日时分秒:yyyy-mm-dd hh:mm:ss
     * 年月日:yyyy-mm-dd
     * @param date
     * @param pattern
     * @return
     */
    public static string datetostr(date date,string pattern) {
        simpledateformat format = new simpledateformat(pattern);
        return format.format(date);
    }
    /**
     * 字符串时间转时间
     * 年月日时分秒:yyyy-mm-dd hh:mm:ss
     * 年月日:yyyy-mm-dd
     * @param time
     * @param pattern
     * @return
     */
    public static date strtodate(string time,string pattern){
        simpledateformat sdf = new simpledateformat(pattern);
        try {
            date date = sdf.parse(time);
            return date;
        } catch (parseexception e) {
            e.printstacktrace();
        }
        return null;
    }
    /**
     * 校验时间是否是日期格式的字符串
     * @param str
     */
    public static boolean validdate(string str) {
        boolean time = true;
        boolean date = true;
        // 指定日期格式为四位年/两位月份/两位日期,注意yyyy/mm/dd区分大小写;
        simpledateformat formatdatetime = new simpledateformat("yyyy-mm-dd hh:mm:ss");
        simpledateformat formatdate = new simpledateformat("yyyy-mm-dd");
        try {
            formatdatetime.parse(str);
        } catch (parseexception e) {
            time = false;
        }
        try {
            formatdate.parse(str);
        } catch (parseexception e) {
            date = false;
        }
        if (!time && !date) {
            system.out.println("请输入正确的日期格式【yyyy-mm-dd/yyyy-mm-dd hh:mm:ss】");
        }
        return time || date;
    }
    /**
     * 时间间隔
     * 多少分钟between.tominutes();
     * 多少天between.todays();
     * 多少秒between.getseconds();
     * 多少分钟多少秒
     * @param starttime
     * @param endtime
     * @return
     */
    public static string durationtime(date starttime, date endtime) {
        localdatetime start = localdatetime.ofinstant(optional.ofnullable(starttime).orelse(new date()).toinstant(), zoneid.systemdefault());
        localdatetime end = localdatetime.ofinstant(optional.ofnullable(endtime).orelse(new date()).toinstant(), zoneid.systemdefault());
        duration between = duration.between(start, end);
        between.getseconds();
        string msg=between.tominutes() "分钟" (between.getseconds()-between.tominutes()*60) "秒";
        return msg;
    }

 
 

结尾

时间不一定能证明很多东西,但一定会让你看透很多东西。一眼就能看得到头,不是我们想要的生活,我们为之努力,是努力让自己的生活多一种可能,给自己的未来多一份惊喜。

网站地图