Java 简单的时间工具类

Java 简单的时间工具类

观前提示:

本文所使用的IDEA版本为ultimate 2019.1,JDK版本为1.8.0_141。

这是自己写的一个简单的时间工具类,包括

  1. 获取当前时间的后n时间(年/月/日…)

  2. 转化为UTC时间

  3. 获取当前月最后一天

  4. 获取当前月天数

  5. 获取当前年天数

  6. 格式化时间

话不多说,直接上代码。

package testDate;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtil {
    
    

    private static String YYYY_MM_DD = "yyyy-MM-dd";
    private static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
    private static String YYYY_MM_DD_T_HH_MM_SS_SSS_Z = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";

    public static void main(String[] args) {
    
    

        // 前一年
        Date d1 = getLastNTime(Calendar.YEAR, -1);
        System.out.println("前一年:" + DateToStr(d1, YYYY_MM_DD_HH_MM_SS));
        // 后一天
        Date d2 = getLastNTime(Calendar.DATE, 1);
        System.out.println("后一天:" + DateToStr(d2, YYYY_MM_DD_HH_MM_SS));
        // 转化为UTC时间
        Date d3 = convertToUTC(new Date());
        System.out.println("UTC时间:" + DateToStr(d3, YYYY_MM_DD_T_HH_MM_SS_SSS_Z));
        // 获取当前月最后一天
        Date d4 = getCurrentMonthLastDay();
        System.out.println("当前月最后一天:" + DateToStr(d4, YYYY_MM_DD));
        // 获取当前月天数
        System.out.println("当前月天数:" + getCurrentMonthDayCount());
        // 获取当前年天数
        System.out.println("当前年天数:" + getCurrentYearDayCount());
    }

    /**
     * 获取当前时间的后n时间(年/月/日...)
     * @param timeType 时间类型(年/月/日...)
     * @param n
     * @return
     */
    private static Date getLastNTime(int timeType, int n){
    
    
        Calendar c = Calendar.getInstance();
        c.add(timeType, n);
        return c.getTime();
    }

    /**
     * 转化为UTC时间
     * @param date
     * @return
     */
    private static Date convertToUTC(Date date){
    
    
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        // 时间偏移量
        int zoneOffset = c.get(Calendar.ZONE_OFFSET);
        // 夏令时差
        int dstOffset = c.get(Calendar.DST_OFFSET);
        // 从时间里扣除这些差量,即可以取得UTC时间
        c.add(Calendar.MILLISECOND, -(zoneOffset + dstOffset));
        return c.getTime();
    }

    /**
     * 获取当前月最后一天
     * @return
     */
    private static Date getCurrentMonthLastDay(){
    
    
        Calendar c = Calendar.getInstance();
        c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
        return c.getTime();
    }

    /**
     * 获取当前月天数
     * @return
     */
    private static int getCurrentMonthDayCount(){
    
    
        Calendar c = Calendar.getInstance();
        return c.getActualMaximum(Calendar.DAY_OF_MONTH);
    }

    /**
     * 获取当前年天数
     * @return
     */
    private static int getCurrentYearDayCount(){
    
    
        Calendar c = Calendar.getInstance();
        return c.getActualMaximum(Calendar.DAY_OF_YEAR);
    }

    /**
     * 格式化时间
     * @param date
     * @param formatType
     * @return
     */
    private static String DateToStr(Date date, String formatType){
    
    
        SimpleDateFormat sdf = new SimpleDateFormat(formatType);
        return sdf.format(date);
    }
}

运行结果如下图所示

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43611145/article/details/108712981
今日推荐