`
zgqynx
  • 浏览: 1364747 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

根据两个日期,得到年,月,日

    博客分类:
  • java
J# 
阅读更多
package aaaaaTest;

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

public class DateTest1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// // TODO Auto-generated method stub
		// int beginYear = 2007;
		// int beginMonth = 2;
		// int beginDay = 7;
		//		
		// int endYear = 2007;
		// int endMonth = 8;
		// int endDay = 17;
		// GregorianCalendar b = new
		// GregorianCalendar(beginYear,beginMonth,beginDay);
		// GregorianCalendar e = new GregorianCalendar(endYear,endMonth,endDay);
		Map year = new HashMap();
		Map month = new HashMap();
		Map day = new HashMap();

		List listYear = new ArrayList();
		List listMonth = new ArrayList();
		List listDay = new ArrayList();

		String time = "2006-02-1";
		String time2 = "2008-05-2";
		DateFormat dfYear = new SimpleDateFormat("yyyy");
		DateFormat dfMonth = new SimpleDateFormat("yyyy-MM");
		DateFormat dfDay = new SimpleDateFormat("yyyy-MM-dd");

		/** ***************************************************************************** */

		Calendar cYear1 = Calendar.getInstance();
		Calendar cYear2 = Calendar.getInstance();
		Calendar cMonth1 = Calendar.getInstance();
		Calendar cMonth2 = Calendar.getInstance();
		Calendar cDay1 = Calendar.getInstance();
		Calendar cDay2 = Calendar.getInstance();

		try {
			// cYear1.setTime(dfDay.parse(time));
			// cYear2.setTime(dfDay.parse(time2));
			//
			// cMonth1.setTime(dfDay.parse(time));
			// cMonth2.setTime(dfDay.parse(time2));

			cDay1.setTime(dfDay.parse(time));// 开始日
			cDay2.setTime(dfDay.parse(time2));// 结束日
		} catch (Exception e) {
			System.out.println("异常发生!!!111111111");
			e.printStackTrace();
		}
		// 逆向思考,由天得到月,由月得到年		
		String monthTemp = ""; // dfMonth.format(cDay1.getTime());//月
		String yearTemp = "";// dfYear.format(cDay1.getTime());//年
		List listDayTemp = null;// new ArrayList();
		List listMonthTemp = null;// new ArrayList();		
		while (!cDay1.after(cDay2)) {
			// listDay.add(dfDay.format(cDay1.getTime()));//天列表

			Date dayTemp = cDay1.getTime();// 一天

			if (dfYear.format(dayTemp).equals(yearTemp)) {// 同一年
				if (dfMonth.format(dayTemp).equals(monthTemp)) {// 同一个月
					listDayTemp.add(dfDay.format(dayTemp)); // 增加天
				} else {// 不同月
					listDayTemp = new ArrayList();// 增加天的列表
					monthTemp = dfMonth.format(dayTemp);
//					if (!day.containsKey(monthTemp)) {
//						day.remove(monthTemp);
//						day.put(monthTemp, listDayTemp);
//					}
//					if(!month.containsKey(yearTemp)){
//						month.remove(yearTemp);
//						month.put(yearTemp, listMonthTemp);
//					}
					listMonthTemp.add(monthTemp);// 增加月
					day.put(monthTemp, listDayTemp);
				}
			} else {// 不同年
				yearTemp = dfYear.format(dayTemp);// 设置年
				listYear.add(yearTemp);// 增加年=======================================
				monthTemp = dfMonth.format(dayTemp);// 设置月
				listMonthTemp = new ArrayList();// 增加月列表
				listMonthTemp.add(monthTemp);// 增加月
				listDayTemp = new ArrayList();// 增加天列表
				listDayTemp.add(dfDay.format(dayTemp));// 增加天
				month.put(yearTemp, listMonthTemp);//
				day.put(monthTemp, listDayTemp);
				
			}
			cDay1.add(Calendar.DAY_OF_MONTH, 1);// 增加一天
		}

		//System.out.println("年:\t" + listYear);
		for(int i=0;i<listYear.size();i++){
			System.out.println();
			System.out.println();
			System.out.println("年:"+listYear.get(i));
			System.out.println();
			System.out.println();
			List monthList =(List)month.get(listYear.get(i));
			System.out.println();
			System.out.println();
			for(int j=0;j<monthList.size();j++){
				System.out.print("月:"+monthList.get(j));
				if((j+1)%9==0){
					System.out.println();
				}
				System.out.println();
				System.out.println();
				List dayList =(List)day.get(monthList.get(j));
				for(int k=0;k<dayList.size();k++){
					System.out.print("日:"+dayList.get(k));
					if((k+1)%10==0){
						System.out.println();
					}
				}
				System.out.println();
				System.out.println();
			}
			System.out.println();
			System.out.println();
			System.out.println();
		}
//		for(int i=0;i<listMonth.size();i++){
//			System.out.println("月:"+listMonth.get(i));
//			
//		}
//		for(int i=0;i<listDay.size();i++){
//			System.out.println("日:"+listDay.get(i));
//		}

		// if(dfYear.format(dayTemp).equals(yearTemp)){//同一年
		// //listMonthTemp.add();//增加月
		// if (dfMonth.format(dayTemp).equals(monthTemp)) {//同一个月
		// listDayTemp.add(dfDay.format(dayTemp)); //增加天
		// }else{//不同月
		// listDayTemp = new ArrayList();//增加天的列表
		// listMonthTemp.add(yearTemp);//增加月
		// }
		// }else{//不同年
		// yearTemp = dfYear.format(dayTemp);//设置年
		// listYear.add(yearTemp);//增加年
		// monthTemp = dfMonth.format(dayTemp);//设置月
		// listMonthTemp.add(monthTemp);//增加月
		// listDayTemp.add(dfDay.format(dayTemp));//增加天
		// }

		// //-------------------------------------------
		// if (dfMonth.format(dayTemp).equals(monthTemp)) {//同一个月
		// listDayTemp.add(dfDay.format(dayTemp)); //增加天
		// }else{//不同月
		// listDayTemp = new ArrayList();//增加天的列表
		// }

		// dfDay.format(cDay1.getTime());
		// oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo

		// while (!cYear1.after(cYear2)) {
		// listYear.add(dfYear.format(cYear1.getTime()));// 得到月年
		// cYear1.add(Calendar.YEAR, 1);// 每次增加一年
		// }
		// //处理月=========================================================================================================================
		// int lenYear = listYear.size();//年数
		// if(lenYear==1){//一年
		// try {
		// cMonth1.setTime(dfDay.parse(time));
		// cMonth2.setTime(dfDay.parse(time2));
		// } catch (Exception e) {
		// }
		// while (!cMonth1.after(cMonth2)) {//得到月的列表
		// listMonth.add(dfMonth.format(cMonth1.getTime()));
		// cMonth1.add(Calendar.MONTH, 1);// 每次增加一月
		// }
		// year.put(listYear.get(0), listMonth);//
		// //处理天-----------------------------------------------------------------------------
		// int lenMonth = listMonth.size();//月数
		// if(lenMonth==1){//只有一个月
		// try {
		// cDay1.setTime(dfDay.parse(time));
		// cDay2.setTime(dfDay.parse(time2));
		// } catch (Exception e) {
		// }
		// while(!cDay1.after(cDay2)){
		// listDay.add(dfDay.format(cDay1.getTime()));
		// cDay1.add(Calendar.DAY_OF_MONTH, 1);// 每次增加一天
		// }
		// }else{//多个月
		//				
		// }
		//			
		// }else{//多年
		// for (int i = 0; i < lenYear; i++) {
		// if (i == 0) {
		// try {
		// cMonth1.setTime(dfDay.parse(time));
		//						
		// cMonth2.setTime(dfDay.parse(time2));
		// } catch (Exception e) {
		// }
		// } else if (i == lenYear - 1) {
		// try {
		// cMonth1.setTime(dfDay.parse(time));
		// cMonth2.setTime(dfDay.parse(time2));
		// } catch (Exception e) {
		// }
		// } else {
		// try {
		// cMonth1.setTime(dfDay.parse(time));
		// cMonth2.setTime(dfDay.parse(time2));
		// } catch (Exception e) {
		// }
		// }
		// }
		// }

		// while(!cYear1.after(cYear2)){
		// listYear.add(dfYear.format(cYear1.getTime()));//得到月年
		// cYear1.add(Calendar.YEAR, 1);//每次增加一年
		// }
		//		
		// while(!cMonth1.after(cMonth2)){
		// listMonth.add(dfMonth.format(cMonth1.getTime()));//得到月年
		// cMonth1.add(Calendar.MONTH, 1);//每次增加一月
		// }
		// while(!cDay1.after(cDay2)){
		// listDay.add(dfDay.format(cDay1.getTime()));//得到月年
		// cDay1.add(Calendar.DAY_OF_MONTH, 1);//每次增加一天
		// }
		// System.out.println("年份如下:");
		// System.out.println();
		// for(int i = 0;i<listYear.size();i++){
		// System.out.print(" "+listYear.get(i));
		// if((i+1)%5==0)System.out.println();
		// }
		// System.out.println();
		// System.out.println();
		// System.out.println("月份如下:");
		// System.out.println();
		// for(int i = 0;i<listMonth.size();i++){
		// System.out.print(" "+listMonth.get(i));
		// if((i+1)%5==0)System.out.println();
		// }
		// System.out.println();
		// System.out.println();
		// System.out.println("天如下:");
		// for(int i = 0;i<listDay.size();i++){
		// System.out.print(" "+listDay.get(i));
		// if((i+1)%5==0)System.out.println();
		// }
		// for(int i =0;i<listYear.size();i++){
		// month.put(listYear.get(i), listMonth);
		// }

		/** ******************************************************************************* */

		//		
		//		
		// Calendar c1 = Calendar.getInstance();
		// Calendar c2 = Calendar.getInstance();
		// try{
		// System.out.println("00000000000000 "+dfDay.parse(time));
		// c1.setTime(dfDay.parse(time));
		// c2.setTime(dfDay.parse(time2));
		// }catch(Exception e3){
		// System.out.println("wrong occured");
		// }
		// //**********************************************************
		//		
		// while(!c1.after(c2)){
		// //listYear.add(dfDay.);
		// listMonth.add(dfMonth.format(c1.getTime()));//得到月年
		// c1.add(Calendar.MONTH, 1);//每次增加一月
		// }
		//		
		// //*********************************************************
		//		
		// List list = new ArrayList();
		// while(!c1.after(c2)){
		// list.add(dfDay.format(c1.getTime()));
		// //c1.add(Calendar.MONTH, 1);
		// c1.add(Calendar.DAY_OF_MONTH, 1);//控制增加的单位
		//		
		// }
		// for(int i=0;i<list.size();i++){
		// System.out.print(" "+list.get(i));
		// if((i+1)%5==0)System.out.println();
		// }
		// System.out.println(list);
	}

}

修改后,主要是去掉多余代码
package aaaaaTest;

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

public class DateTest1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Map month = new HashMap();
		Map day = new HashMap();

		List listYear = new ArrayList();		
		String time = "2006-02-1";
		String time2 = "2008-05-2";
		DateFormat dfYear = new SimpleDateFormat("yyyy");
		DateFormat dfMonth = new SimpleDateFormat("yyyy-MM");
		DateFormat dfDay = new SimpleDateFormat("yyyy-MM-dd");
	
		Calendar cDay1 = Calendar.getInstance();
		Calendar cDay2 = Calendar.getInstance();

		try {
			cDay1.setTime(dfDay.parse(time));// 开始日
			cDay2.setTime(dfDay.parse(time2));// 结束日
		} catch (Exception e) {
			e.printStackTrace();
		}
		// 逆向思考,由天得到月,由月得到年		
		String monthTemp = ""; //月
		String yearTemp = "";// 年
		List listDayTemp = null;
		List listMonthTemp = null;
		while (!cDay1.after(cDay2)) {
			Date dayTemp = cDay1.getTime();// 一天
			if (dfYear.format(dayTemp).equals(yearTemp)) {// 同一年
				if (dfMonth.format(dayTemp).equals(monthTemp)) {// 同一个月
					listDayTemp.add(dfDay.format(dayTemp)); // 增加天
				} else {// 不同月
					listDayTemp = new ArrayList();// 增加天的列表
					monthTemp = dfMonth.format(dayTemp);
					listMonthTemp.add(monthTemp);// 增加月
					day.put(monthTemp, listDayTemp);
				}
			} else {// 不同年
				yearTemp = dfYear.format(dayTemp);// 设置年
				listYear.add(yearTemp);// 增加年=======================================
				monthTemp = dfMonth.format(dayTemp);// 设置月
				listMonthTemp = new ArrayList();// 增加月列表
				listMonthTemp.add(monthTemp);// 增加月
				listDayTemp = new ArrayList();// 增加天列表
				listDayTemp.add(dfDay.format(dayTemp));// 增加天
				month.put(yearTemp, listMonthTemp);//
				day.put(monthTemp, listDayTemp);				
			}
			cDay1.add(Calendar.DAY_OF_MONTH, 1);// 增加一天
		}
		
		for(int i=0;i<listYear.size();i++){
			System.out.println("年:"+listYear.get(i));
			List monthList =(List)month.get(listYear.get(i));
			for(int j=0;j<monthList.size();j++){
				System.out.print("月:"+monthList.get(j));
				if((j+1)%5==0){
					System.out.println("\n\n\n");
				}
				System.out.println("\n\n\n");
				List dayList =(List)day.get(monthList.get(j));
				for(int k=0;k<dayList.size();k++){
					System.out.print("日:"+dayList.get(k));
					if((k+1)%5==0){
						System.out.println("\n\n\n");
					}
				}
			}
		}
	}
}

分享到:
评论

相关推荐

    Java 计算两个日期之间相差的月数

    在Java编程语言中,计算两个日期之间相差的月数是一个常见的任务,这通常涉及到日期处理和时间计算。本文将深入探讨如何使用Java实现这个功能,包括标准库中的API以及一些高级方法。 首先,Java 8引入了`java.time`...

    输出两个日期之间的日期

    给定两个日期,获取两个日期之间的天数,并获得两个日期之间的日期并输出

    sql确定两个日期之间的月份数或年数

    通过上述不同数据库系统中的示例可以看出,虽然不同的数据库提供了不同的内置函数来简化计算过程,但其核心思想都是相同的:即先找到两个日期,然后根据这两个日期计算出它们之间的年数和月数差异。在实际应用中,...

    计算两个日期间的年月日差

    首先,我们要明确的是,计算两个日期之间的差值通常涉及到日期间隔的计算,这包括年、月、日三个维度。在C#中,我们可以使用DateTime结构的`Subtract`方法来获取两个日期之间的时间间隔,这将返回一个TimeSpan对象。...

    一行代码判断两个日期是否在同一周

    如果日期1减去`dt`所得到的天数整除7的商等于日期2减去`dt`的商,那么这两个日期在同一周。 ```csharp public static bool IsInSameWeek2(DateTime dtS, DateTime dtE) { int days1 = (dtS - dt).Days; int days2...

    js计算两个日期相差几周

    ### JavaScript 计算两个日期相差几周的知识点详解 在日常开发工作中,我们经常会遇到需要处理日期的问题,比如计算两个日期之间的差距等。本篇文章将详细介绍如何使用JavaScript编写一个函数来计算两个日期之间...

    日期差值计算器,计算两个日期之间差多少天

    这是一个非常简单好用的东东,用于简单计算两个日期之间的差值。

    两个时间间隔的天数

    在实际应用中,经常需要计算两个日期之间的差值,尤其是在日程安排、数据分析等领域。这段代码提供了一个JavaScript函数 `functionDateDiff`,用于计算两个日期字符串之间相隔的天数。 #### 函数解析 - **参数**: ...

    比较两个日期之间相差的天数

    ### 比较两个日期之间相差的天数 在Java编程语言中,比较两个日期之间的差值是一个常见的需求,尤其是在处理日历相关的功能时。本文将详细介绍如何在Java中计算两个日期之间的天数差,并对给出的代码进行解析。 ##...

    JS 获得两个时间间隔天数

    在JavaScript中,获取两个日期之间的天数差是一个常见的任务,特别是在处理时间和日期相关的应用程序中。这篇博客“JS获得两个时间间隔天数”提供了一个实用的方法来解决这个问题。在这个方法中,我们将探讨如何利用...

    计算两个时间相差年月日时分秒.zip

    在这个名为"计算两个时间相差年月日时分秒.zip"的项目中,开发者创建了一个工具,能够精确地计算出两个日期之间的差值,以年、月、日、小时、分钟和秒的形式呈现。这个功能在多种场景下都非常实用,比如人力资源管理...

    javascript 取两个日期的差值

    根据给定的文件标题“javascript 取两个日期的差值”以及描述“求两个日期的差值,在平常用的应该很多的吧,希望能给你带来帮助...”,我们可以明确地了解到,该文章的主要目的是讲解如何用JavaScript计算两个日期...

    java中计算两个日期相差几天

    ### Java中计算两个日期相差几天 在Java编程中,经常需要处理与日期和时间相关的操作。其中一项常见的需求就是计算两个日期之间的差距。本篇文章将详细介绍如何在Java中计算两个日期相差几天,并深入探讨示例代码中...

    Lua实现两个日期相减得出天数(datadiff)

    实现两个数值型的日期相减得出天数的函数。

    比较两个日期相差多少秒的几种方法

    你可以分别对两个日期调用此函数,然后用第二个日期时间值减去第一个,得到一个表示两者之间差值的`TDateTime`值,再将其转换为秒数。例如,在VB.NET中,你可以使用 `TimeSpan` 对象的 `TotalSeconds` 属性来实现。 ...

    简单的计算两个日期之间天数

    现在,我们已经得到了两个日期之间的天数差。为了将这个功能封装成一个可复用的函数,可以这样编写: ```delphi function CalculateDateDifference(const Date1, Date2: TDate): Integer; begin Result := Trunc...

    日期加天数,日期减天数得到一个新日期,及两个日期天数相减得到一个天数,纯C语言不用time.h库。

    日期加天数,日期减天数得到一个新日期,及两个日期天数相减得到一个天数,纯C语言,不用time.h库,不要加其它库函数。

    ABAP日期函数(求月末日,第几周,search help 只显示年月) 使用方法实例

    10. 获得两个日期的年数 使用 CALL FUNCTION 'HR_99S_INTERVAL_BETWEEN_DATES' 函数可以获取两个日期的年数。 11. 获取星期信息 使用 GET_WEEK_INFO_BASED_ON_DATE 函数可以获取星期信息,例如星期几、周一的日期...

    计算任意2个日期内的工作日、休息日、天数间隔(没有考虑到国定假日)

    但是这个日期并不是我们所要的日期,接下来我们要做的就是计算date_start,date_end这两个日期对于根据它们所产生的新的日期之间的时间偏移量,date_start的偏移量(date_start_change)是需要加的,而date_end的这个...

    java两个日期相减得到的天数、毫秒数;获取两个日期中的最大日期;获取两个日期中的最小日期

    java 两个日期相减得到的天数、毫秒数;获取两个日期中的最大日期;获取两个日期中的最小日期。

Global site tag (gtag.js) - Google Analytics