Date时间操作

  • LocalDateTime 获取时间
package com.example.times.datetimeformat;


import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAccessor;
import java.util.Date;

/**
 * @Author: CQ
 * @Date: 2021/2/23 18:26
 */
public class DateTo {
    public static void main(String[] args) {

        String s = dateToString("yyyy-MM-dd",0);
        System.out.println("方法1: "+s);
        String date = dateToString(new Date(), "yyyy-MM-dd HH:mm:ss");
        System.out.println("方法2: "+date);
    }
    /**
     * <P>获取指定月份时间和指定格式的时间字符串</P>
     * @param timeFormat 时间格式,
     * @param monthsNumber 月份,基本规则和天数一样
     * @return 用处不大
     */
    public static String monthsToString(String timeFormat,Integer monthsNumber) {

        DateTimeFormatter format = DateTimeFormatter.ofPattern(timeFormat);
        LocalDateTime localDateTime = LocalDateTime.now();
        LocalDateTime plus = localDateTime.plus(monthsNumber, ChronoUnit.MONTHS);
        return plus.format(format);
    }
    /**
     * <P>获取指定日期时间和指定格式的时间字符串</P>
     * @param timeFormat 时间格式
     * @param dateNumber 时间天数,以当前日期为准,传入0则获取当前日期,传入负数则是前天时间(负7则前几天),明天是正数,规则与负数一样
     * @return
     */
    public static String dateToString(String timeFormat,Integer dateNumber) {

        DateTimeFormatter format = DateTimeFormatter.ofPattern(timeFormat);
        LocalDateTime localDateTime = LocalDateTime.now();
        LocalDateTime plus = localDateTime.plus(dateNumber, ChronoUnit.DAYS);
        return plus.format(format);
    }

    /**
     * <P>获取指定时间和指定格式的时间字符串</P>
     * @param date 时间参数
     * @param timeFormat 时间格式
     * @return
     */
    public static String dateToString(Date date, String timeFormat) {

        DateTimeFormatter format = DateTimeFormatter.ofPattern(timeFormat);
        Instant instant = date.toInstant();
        ZoneId zone = ZoneId.systemDefault();
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
        return localDateTime.format(format);
    }
}

package com.example.times.utils;

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

/**
 * @Author Qian
 */
public class DateUtils {
    // 日期处理格式
    public static String DATE_PATTERN_YYYYMMDD = "yyyy-MM-dd";

    /**
     * 把日期转成字符串格式
     *
     * @param date
     * @return
     */
    public static String formatDateYYYYMMDD(Date date) {
        SimpleDateFormat timeFt = new SimpleDateFormat(DATE_PATTERN_YYYYMMDD);
        return (date == null ? "" : timeFt.format(date));
    }

    /**
     * 某年第一天
     *
     * @param year
     * @return
     */
    public static String getFirstDayOfYear(int year) {
        return getFirstDayOfQuarter(year, 1);
    }

    /**
     * 某年最后一天
     *
     * @param year
     * @return
     */
    public static String getLastDayOfYear(int year) {
        return getLastDayOfQuarter(year, 4);
    }

    /**
     * 某年某季度第一天
     *
     * @param year
     * @param quarter
     * @return
     */
    public static String getFirstDayOfQuarter(int year, int quarter) {
        int month = 0;
        if (quarter > 4) {
            return null;
        } else {
            month = (quarter - 1) * 3 + 1;
        }
        return getFirstDayOfMonth(year, month);
    }

    /**
     * 某年某季度最后一天
     *
     * @param year
     * @param quarter
     * @return
     */
    public static String getLastDayOfQuarter(int year, int quarter) {
        int month = 0;
        if (quarter > 4) {
            return null;
        } else {
            month = quarter * 3;
        }

        return getLastDayOfMonth(year, month);
    }

    /**
     * 某年某月的第一天
     *
     * @param year
     * @param month
     * @return
     */
    public static String getFirstDayOfMonth(int year, int month) {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, month - 1);
        c.set(Calendar.DAY_OF_MONTH, c.getActualMinimum(Calendar.DAY_OF_MONTH));

        return formatDateYYYYMMDD(c.getTime());
    }

    /**
     * 某年某月的最后一天
     *
     * @param year
     * @param month
     * @return
     */
    public static String getLastDayOfMonth(int year, int month) {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, month - 1);
        c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));

        return formatDateYYYYMMDD(c.getTime());
    }


    /**
     * 某年某周的第一天
     *
     * @param year
     * @param week
     * @return
     */
    public static String getFirstDayOfWeek(int year, int week) {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.WEEK_OF_YEAR, week);
        // 设置周一
        c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        c.setFirstDayOfWeek(Calendar.MONDAY);

        return formatDateYYYYMMDD(c.getTime());
    }

    /**
     * 某年某周的最后一天
     *
     * @param year
     * @param week
     * @return
     */
    public static String getLastDayOfWeek(int year, int week) {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.WEEK_OF_YEAR, week);
        c.setFirstDayOfWeek(Calendar.MONDAY);
        // Sunday
        c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6);

        return formatDateYYYYMMDD(c.getTime());
    }

    /**
     * 当前日期是几年第几周
     *
     * @return
     */
    public static int getCurrentWeek() {
        Calendar cal = Calendar.getInstance();
        // 设置周一为一周的第一天
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        cal.setTime(new Date());
        return cal.get(Calendar.WEEK_OF_YEAR);
    }

    public static void main(String[] args) {

        System.out.println("某年第一天: " + getFirstDayOfYear(2019));

        System.out.println("某年最后一天 : " + getLastDayOfYear(2019));

        System.out.println("某年某季度第一天: " + getFirstDayOfQuarter(2019, 10));

        System.out.println("某年某季度最后一天: " + getLastDayOfQuarter(2019, 10));

        System.out.println("某年某月的第一天: " + getFirstDayOfMonth(2019, 10));

        System.out.println("某年某月的最后一天: " + getLastDayOfMonth(2019, 10));

        //System.out.println("某一年周的总数 : " + getMaxWeekNumOfYear(getFirstDayOfYear(2018), getLastDayOfYear(2018)));

        System.out.println("某年某周的第一天: " + getFirstDayOfWeek(2019, 10));

        System.out.println("某年某周的最后一天: " + getLastDayOfWeek(2019, 10));

        System.out.println("当前日期: " + formatDateYYYYMMDD(new Date()) + ", 本年第" + getCurrentWeek() + "周");
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值