ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

日期操作(获取所有月份+分割时间段)

2022-09-05 09:03:58  阅读:190  来源: 互联网

标签:分割 String format add 日期 calBegin 时间段 new Calendar


日期操作(获取所有月份+分割时间段)

/*
	 * 获取所有的的月份
	 */
	private static List<String> getInitMonthMapWithZero() {
		List<String> list = new ArrayList<String>();
		Calendar c = Calendar.getInstance();
		for (int i = 0; i < 12; i++) {
			int k = c.get(Calendar.YEAR);
			int j = c.get(Calendar.MONTH) + 1 - i;
			String date = "";
			if (j >= 1) {
				date = k + "-" + (j >= 10 ? "" : "0") + j;
			} else {
				int p = 11 - i;// 剩余循环次数
				int m = c.get(Calendar.YEAR) - 1;
				int n = c.get(Calendar.MONTH) + 2 + p;
				date = m + "-" + (n >= 10 ? "" : "0") + n;
			}
			list.add(date);
		}
		return list;
	}
 * 按照指定小时分割时间段
 * 
 * @param dateType   类型 M/D/H/N -->每月/每天/每小时/每分钟
 * @param dBegin开始时间
 * @param dEnd结束时间
 * @param time       指定小时(如:1、2、3、4)
 * @return
 */
public static List<String> findDates(String dateType, Date dBegin, Date dEnd, int time) throws Exception {
	List<String> listDate = new ArrayList<>();
	listDate.add(new SimpleDateFormat("yyyy-MM-dd HH:mm").format(dBegin));
	Calendar calBegin = Calendar.getInstance();
	calBegin.setTime(dBegin);
	Calendar calEnd = Calendar.getInstance();
	calEnd.setTime(dEnd);
	while (calEnd.after(calBegin)) {
		if ("H".equals(dateType)) {
			calBegin.add(Calendar.HOUR, time);
		}
		if ("M".equals(dateType)) {
			calBegin.add(Calendar.MONTH, time);
		}
		if ("D".equals(dateType)) {
			calBegin.add(Calendar.DATE, time);
		}
		if ("N".equals(dateType)) {
			calBegin.add(Calendar.MINUTE, time);
		}
		if (calEnd.after(calBegin)) {
			listDate.add(new SimpleDateFormat("yyyy-MM-dd HH:mm").format(calBegin.getTime()));
		} else {
			listDate.add(new SimpleDateFormat("yyyy-MM-dd HH:mm").format(calEnd.getTime()));
		}

	}
	return listDate;
}

public static void main(String[] args) throws Exception {
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
	SimpleDateFormat nowDate = new SimpleDateFormat("yyyy-MM-dd");
	Date date = new Date();
	String format = nowDate.format(date);
	String startDate = format.concat(" 00:00");
	String endDate = format.concat(" 23:59");
	Date dBegin = sdf.parse(startDate);
	Date dEnd = sdf.parse(endDate);
	List<String> list = findDates("H", dBegin, dEnd, 3);
	for (String str : list) {
		System.out.println(str);
	}
}

标签:分割,String,format,add,日期,calBegin,时间段,new,Calendar
来源: https://www.cnblogs.com/hhs-5120/p/16656843.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有