程序员社区

Java 时间工具类

话不多说,直接上代码。

package testDate;

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

//项目案例 www.fhadmin.org
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);
    }
}

赞(0) 打赏
未经允许不得转载:IDEA激活码 » Java 时间工具类

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区