Java:DateUtils 获取 本上下(周/月)周一周日 最后一天 当月多少天

  • 阿里云国际版折扣https://www.yundadi.com

  • 阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6


    前言

    使用日期函数,获取当月多少天,当前第几月,以及各种与时间有关系的操作;
    这篇文章草稿是在19-5-30写好的,一直想完善,写个一网打尽的,奈何自己懒,一直没写完,时隔一年,写完吧,基本上可以处理时间的基本转换操作
    ​​​公共抽象类CalendarAPI​​​参考文章一
    参考文章二

    字符串互转时间

    Date d=new Date();
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    //时间转字符串 2020-07-17 11:30:49
    String ds=df.format(d);
    System.out.println(ds);
    try {
    //字符串转时间 Fri Jul 17 11:26:22 CST 2020
    Date sd=df.parse("2020-07-17 11:26:22");
    System.out.println(sd);
    } catch (ParseException e) {
    e.printStackTrace();
    }

    毫秒值转时间

    Calendar calendar2 = Calendar.getInstance();
    calendar2.setTimeInMillis(1571952368000L);
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    String format = df.format(calendar2.getTime());
    System.out.println(format);
    //2019-10-25

    工具类

    获取当月多少天 本(周/月)上(周/月)下(周/月)周一周日 本月第一天,最后一天

    package com.picc.utils;

    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;

    /**
    * @Author ZhangLe
    * @Date 2020/9/27 15:21
    */
    public class DateUtil {

    private static final DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    private static final DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
    private static final Calendar calendar =Calendar.getInstance();

    /**
    * 返回当前时间
    * @return
    */
    public static String getTime() {
    Date date = new Date();
    String format = df.format(date);
    return format;
    }
    /**
    * 获取两个时间差值 几天几时几分几秒
    * @param startTime
    * @param endTime
    * @return
    */
    public static String dateDifference(String startTime ,String endTime){
    String str="";
    try {
    Date start = df.parse(startTime);
    Date end = df.parse(endTime);
    //除以1000是为了转换成秒
    long between=(end.getTime()-start.getTime())/1000;
    long day=between/(24*3600);
    long hour=between%(24*3600)/3600;
    long minute=between%3600/60;
    long second=between%60;
    System.out.println(between%60);
    str=day+"天"+hour+"小时"+minute+"分"+second+"秒";
    } catch (ParseException e) {
    e.printStackTrace();
    }
    return str;
    }

    /**
    * 返回当前时间之前N周 本周 之后N周 的周一周日准确时间
    * @param date 当前时间
    * @param week 获取上几周就传负数几 下几周就正数+1 举例上周 传 -1 本周传 0 下周传 1
    * @return
    */
    public static Map<String,String> reMonSun(String date,int week){
    Map<String,String> map = new HashMap();

    try {
    calendar.setTime(df2.parse(date));
    //设置一周第一天是星期一 国外的一周第一天是星期天 默认是按照国外算得
    calendar.setFirstDayOfWeek(Calendar.MONDAY);

    calendar.add(Calendar.WEEK_OF_MONTH, week);

    //查询当前星期几 在本周中 从周日开始算 星期天就是 1 星期一就是2 以此类推
    int nowTime =calendar.get(Calendar.DAY_OF_WEEK);
    //是1的时候就是星期天 给他赋值8 可以在下边得出负数 用于消减时间 其他状况不做处理
    if(nowTime==1){
    nowTime= 8;
    }
    calendar.add(Calendar.DATE, calendar.getFirstDayOfWeek() - nowTime);
    Date monday = calendar.getTime();
    String weekBegin = df.format(monday);
    // 此时日期已经是星期一 给当前日期加上6天必然是周末
    calendar.add(Calendar.DATE, 6);
    Date sundayDate = calendar.getTime();
    String weekEnd = df.format(sundayDate);
    map.put("mondayDate", weekBegin);
    map.put("sundayDate", weekEnd);
    return map;
    }catch (Exception e){
    throw new RuntimeException(e);
    }
    }

    /**
    * 返回当前时间之前N月 本月 之后N月第一天和最后一天
    * @param date 当前时间
    * @param month 获取上几月就传负数几 下几月就正数+1 举例上月 传 -1 本月传 0 下月传 1
    * @return
    */
    public static Map<String,String> reOneLast(String date,int month){

    Map<String,String> map = new HashMap();
    try {
    calendar.setTime(df2.parse(date));
    //当前月的上个月
    calendar.add(Calendar.MONTH, month);
    //设置当前月的最大天数
    calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
    Date lastDateOfMonth = calendar.getTime();
    String lastDay = df.format(lastDateOfMonth);
    //设置一 即为每月第一天
    calendar.set(Calendar.DATE,1);
    Date oneDayofMonth = calendar.getTime();
    String oneDay = df.format(oneDayofMonth);
    map.put("oneDay", oneDay);
    map.put("lastDay", lastDay);
    }catch (Exception e){
    throw new RuntimeException(e);
    }

    return map;
    }
    /**
    * 返回当月最大天数
    * @param date 当前时间
    * @return
    */
    public static int reMonthMaxDay(String date){
    try {
    calendar.setTime(df2.parse(date));
    } catch (ParseException e) {
    e.printStackTrace();
    }
    int actualMaximum = calendar.getActualMaximum(Calendar.DATE);
    return actualMaximum;
    }
    public static void main(String[] args) {
    String date="2020-11-05";


    }
    }

    获取当月多少天

    输入日期获取当月多少天

    String date="2019-05";
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
    Calendar calendar =Calendar.getInstance();
    try {
    calendar.setTime(dateFormat.parse(date));
    }catch (Exception e){
    throw new RuntimeException(e);
    }

    calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH));
    calendar.set(Calendar.DATE, 1);
    calendar.roll(Calendar.DATE,-1);
    int time1 =calendar.get(Calendar.DATE);
    System.out.println(time1);

    工具类做法

    /**
    * 返回当月最大天数
    * @param date 当前时间
    * @return
    */
    public static int reMonthMaxDay(String date){
    try {
    calendar.setTime(df2.parse(date));
    } catch (ParseException e) {
    e.printStackTrace();
    }
    int actualMaximum = calendar.getActualMaximum(Calendar.DATE);
    return actualMaximum;
    }

    两个日期比较大小

    String old="2020-07-12 19:30:48.0";
    String now="2020-07-17 11:30:48.0";
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    try {
    Date sd1=df.parse(old);
    Date sd2=df.parse(now);
    //sd1时间在sd2时间之前
    System.out.println(sd1.before(sd2));
    //sd1时间在sd2时间之后 返回布尔值
    System.out.println(sd1.after(sd2));
    } catch (ParseException e) {
    e.printStackTrace();
    }

    获取某天的N天/月/年前

    Calendar的方法很多,星期,小时,。。根据需求调用方法即可

    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    Date date = new Date();//获取当前时间
    Calendar calendar = Calendar.getInstance();

    calendar.setTime(date);
    calendar.add(Calendar.DATE, -15);//当前时间减去15天,即15天前的时间
    String format = dateFormat.format(calendar.getTime());
    System.out.println(format);
    System.out.println(calendar.getTime());
    calendar.add(Calendar.YEAR, -1);//当前时间减去一年,即一年前的时间
    String format2 = dateFormat.format(calendar.getTime());
    System.out.println(format2);
    System.out.println(calendar.getTime());
    calendar.add(Calendar.MONTH, -1);//当前时间前去一个月,即一个月前的时间
    String format3 = dateFormat.format(calendar.getTime());
    System.out.println(format3);
    System.out.println(calendar.getTime());
    calendar.add(Calendar.MONTH, 1);//当前时间加一个月,即一个月后的时间
    String format4 = dateFormat.format(calendar.getTime());
    System.out.println(format4);
    System.out.println(calendar.getTime());

    Java:DateUtils 获取 本上下(周/月)周一周日 最后一天 当月多少天_Calendar


  • 阿里云国际版折扣https://www.yundadi.com

  • 阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
    标签: Java