获取时间段集合

获取时间段集合

js

setHouseRatesColumn(‘2022-08-20’, ‘2022-08-25’);
[“2022-08-20”, “2022-08-21”, “2022-08-22”, “2022-08-23”, “2022-08-24”, “2022-08-25”]
setHouseRatesColumn(‘2022-08-01’, ‘2022-08-31’, 1);//星期几
[“2022-08-01”, “2022-08-08”, “2022-08-15”, “2022-08-22”, “2022-08-29”]

//获取时间段集合
function setHouseRatesColumn(startTime, endTime, week) {
	// 获取时间段内的所有日期/指定星期几的日期
	week = week == 7 ? 0 : week;
	let dateList = [];
	startTime = new Date(startTime);
	endTime = new Date(endTime);
	while ((endTime.getTime() - startTime.getTime()) >= 0) {
	  let year = startTime.getFullYear();
	  let month = startTime.getMonth() + 1 < 10 ? '0' + (startTime.getMonth() + 1) : startTime.getMonth() + 1;
	  let day = startTime.getDate().toString().length == 1 ? '0' + startTime.getDate() : startTime.getDate();
	  if(isNaN(week) || startTime.getDay() == week) {
		dateList.push(`${year}-${month}-${day}`);
	  }
	  startTime.setDate(startTime.getDate() + 1);
	}
	return dateList;
  }

java

List dataList = getDays(“2022-08-20”, “2022-08-27”);

private List<String> getDays(final String bigtimeStr, final String endTimeStr) throws ParseException {
        Date bigtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(bigtimeStr + " 00:00:00");
        Date endtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(endTimeStr + " 00:00:00");
        //定义一个接受时间的集合
        List<Date> lDate = new ArrayList<Date>();
        lDate.add(bigtime);
        Calendar calBegin = Calendar.getInstance();
        // 使用给定的 Date 设置此 Calendar 的时间
        calBegin.setTime(bigtime);
        Calendar calEnd = Calendar.getInstance();
        // 使用给定的 Date 设置此 Calendar 的时间
        calEnd.setTime(endtime);
        // 测试此日期是否在指定日期之后
        while (endtime.after(calBegin.getTime()))  {
            // 根据日历的规则,为给定的日历字段添加或减去指定的时间量
            calBegin.add(Calendar.DAY_OF_MONTH, 1);
            lDate.add(calBegin.getTime());
        }
        List<String> datas = new LinkedList<String>();
        for (Date date : lDate) {
            datas.add(new SimpleDateFormat("yyyy-MM-dd").format(date));
        }
        return datas;
    }

获取当前时间

String date = new SimpleDateFormat(“yyyy-MM-dd”).format(new Date());

TimeUtils.format(new Date(), TimeUtils.YYYY_MM_DD_HH_MM_SS)
yyyyMMddHHmmssSSS

获取指定时间的上个月

settleMonth:202212
nextSettleMonth:202301

try {
     SimpleDateFormat settleMonth = new SimpleDateFormat ("yyyyMM");
      Date date = settleMonth.parse (billVo.getSettleMonth());
      Calendar cal = Calendar.getInstance();
      cal.setTime(date);
      cal.add(Calendar.MONTH, 1);
      SimpleDateFormat nextSettleMonth = new SimpleDateFormat("yyyyMM");
      billVo.setNextSettleMonth(nextSettleMonth.format (cal.getTime ()));
 	} catch (ParseException e) {
     e.printStackTrace();
    }

Calendar

在这里插入图片描述

Calendar.YEAR:年份。

Calendar.MONTH:月份。

Calendar.DATE:日期。

Calendar.DAY_OF_MONTH:日期,和上面的字段意义完全相同。

Calendar.HOUR12小时制的小时。

Calendar.HOUR_OF_DAY24 小时制的小时。

Calendar.MINUTE:分钟。

Calendar.SECOND:秒。

Calendar.DAY_OF_WEEK:星期几。

获取当前时间 – 月份
(没通过.set()或者.setTime()方法设置指定时间的话 .get(Calendar.MONTH) 获取到到的月份就是从0开始的)
int month = Calendar.getInstance().get(Calendar.MONTH);
如果整型变量 month 的值是 0,表示当前日历是在 1 月份;如果值是 11,则表示当前日历在 12 月份。

Calendar calendar = Calendar.getInstance(); // 如果不设置时间,则默认为当前时间

calendar.setTime(new Date()); // 将系统当前时间赋值给 Calendar 对象

System.out.println("现在时刻:" + calendar.getTime()); // 获取当前时间

int year = calendar.get(Calendar.YEAR); // 获取当前年份

System.out.println("现在是" + year + "年");

int month = calendar.get(Calendar.MONTH) + 1; // 获取当前月份(月份从 0 开始,所以加 1)
 Calendar calendar = Calendar.getInstance();
 calendar.set(2023, 5, 1); // 实际的calendar对象所表示的日期为2016年6月1日
int month = calendar.get(Calendar.MONTH); //获取设定时间 月份(5月)
//month =5

dealYm 日期处理方法

将传入的 文本类型的日期或 日期类型日期转换为 Date 输出

private Date dealYm(final String ym, final Date ymDate, final boolean monthEnd) {
		int year = 0;
		int month = 0;
		if (ymDate != null) {
			year = ymDate.getYear() + 1900;
			month = ymDate.getMonth() + 1;
		} else {
			if (StringUtil.isEmptyString(ym)) {
				return null;
			}
			if (ym.length() < 5) {
				return null;
			}
			
			year = Integer.parseInt(ym.substring(0, 4));
			String tmpMonth = ym.substring(4);
			if (tmpMonth.charAt(0) > '9' || tmpMonth.charAt(0) < '0') {
				tmpMonth = tmpMonth.substring(1);
			}
			if (tmpMonth.indexOf("/") > -1) {
				tmpMonth = tmpMonth.substring(0, tmpMonth.indexOf("/"));
			} else if (tmpMonth.indexOf("-") > -1) {
				tmpMonth = tmpMonth.substring(0, tmpMonth.indexOf("-"));
			} else if (tmpMonth.length() > 2){
				tmpMonth = tmpMonth.substring(0, 2);
			}
			month = Integer.parseInt(tmpMonth);
		}
		try {
			Calendar cd = Calendar.getInstance();
			cd.set(Calendar.YEAR, year);
			cd.set(Calendar.DAY_OF_MONTH, 1);
			if (monthEnd) {
				cd.set(Calendar.MONTH, month);
				cd.add(Calendar.DAY_OF_MONTH,-1);
			} else {
				cd.set(Calendar.MONTH, month - 1);
			}
			//仅存储日期,防止数据库中存储时间
			return DateUtil.format(DateUtil.format(cd.getTime(), "yyyy-MM-dd"), "yyyy-MM-dd");
		}
		catch (Exception e) {
			return null;
		}
	}

Date类

1.概念:Date类是我们常用的一个日期和时间的对象,此类在 java.util 包中,并不是java.sql中的Date
2.创建日期对象
    Date date = new Date();
    Date date = new Date(System.currentTimeMillis()); //获取当前时间转换为毫秒数
3.常用方法
    date.getYear()+1900; //获取当前年份 必须加上1900
    date.getMonth()+1; //获取当前月份 从0-11,所以必须加1
    date.getDate(); //获取当前日,1-31
    
    date.toString(); //转换为String
    date.toGMTString(); //转换为GMT时区
    date.toLocaleString(); //转换为本地时区

Calendar类

1.概念:日历类Calendar更多的是代表年 月 日 周 星期 上午 下午 夏时令等这样内容,Date用于记录某一个含日期的、精确到毫秒的时间。重点在代表一刹那的时间本身
2.创建
    Calendar calendar = Calendar.getInstance();
3.常用方法
    Date date = calendar.getTime(); //获取一个Date的实例
    calendar.get(Calendar.YEAR);  //获取当前的年份
    calendar.get(Calendar.MONTH)+1;  //获取当前的月份
    calendar.get(Calendar.DAY_OF_MONTH);  //获取日
    calendar.get(Calendar.HOUR_OF_DAY);  //获取时
    calendar.get(Calendar.MINUTE);  //获取分
    calendar.get(Calendar.SECOND);  //获取秒

SimpleDateFormat类

1.概念:格式化输出日期,此类提供了一些预定义字符串或者称之为占位符
  yyyy:年  MM:月  dd: 日  HH: 小时  mm: 分钟  ss: 秒
2.创建
  //获取当前时间
  Date date = new Date();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
  sdf.format(date);  //将当前时间输出格式转换为yyyy年MM月dd日 HH:mm:ss

新增的日期时间类LocalDate LocalTime LocalDateTime

1.LocalDate类-本地日期类
    LocalDate d = LocalDate.now(); //当前日期
2.LocalTime类-本地时间类
    LocalTime t = LocalTime.now(); //当前时间
3.LocalDateTime类-本地日期时间类
    LocalDateTime dt = LocalDateTime.now();
-------------另一种写法(更规范)----------------
    LocalDateTime dt = LocalDateTime.now(); //当前日期和时间
    LocalDate d = dt.toLocalDate(); //转换到当前日期
    LocalTime t = dt.toLocalTime(); //转换到当前时间
4.获取年月日时分秒的用法:
    dt.getYear(); //年
    dt.getMonth(); //月
    dt.getDayOfMonth(); //一个月中的第几天
    dt.getDayOfWeek(); //一周中的星期几
    dt.getDayOfYear(); //一年的第几天
    dt.getHour(); //小时
    dt.getMinute(); //分钟
    dt.getSecond(); //秒
5.根据指定的日期时间创建对象的用法
    LocalDate date = LocalDate.of(2020,03,31); //2020-03-31
    LocalTime time = LocalTime.of(16,57,50); //16:57:50
    LocalDateTime datetime = LocalDateTime.of(2020,03,31,16,57,50)
    LocalDateTime datetime2 = LocalDateTime.of(date,time);
6.根据标准格式创建对象的用法
    ISO 8601规定的日期和时间格式:
    日期:yyyy-MM-dd
    时间:HH:mm:ss
    带毫秒的时间:HH:mm:ss.SSS
    日期和时间:yyyy-MM-dd'T'HH:mm:ss
    带毫秒的日期和时间:yyyy-MM-dd'T'HH:mm:ss.SSS
    LocalDateTime datetime = LocalDateTime.parse("2020-03-31T15:16:17")
    LocalDate date = LocalDate.parse("2020-03-31");
    LocalTime time = LocalTime.parse("15:16:17");
7.新增的日期时间格式化类 DateTimeFormatter类
    ①概念:如果要自定义输出的格式,或者要把一个非ISO 8601格式的字符串解析成LocalDateTime,可以使用新的DateTimeFormatter
    ②使用
        //自定义格式化
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
        dtf.format(LocalDateTime.now());
        //用自定义格式解析
        LocalDateTime dt2 = LocalDateTime.parse("2020/03/31 15:16:17",dtf);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值