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

计算两个日期(8位)之间的月份数将中间的月份存放于一个List中.

    博客分类:
  • J2SE
J# 
阅读更多
package com.potevio.rnd.tobacco.mine;

import java.util.ArrayList;
import java.util.List;

/**
 * @description 最近的一个项目做统计的时候,为了方便用户跨段查询,允许客户选择一段时间,后台计算来两个日期之间的月份数,最后把月份添加到一个List里面
 * @author Zhou-Jingxian
 * @date Jan 5, 2010
 */
public class DataUtil {

	/**
	 * 
	 * @param starttime
	 *            20080610
	 * @param endtime
	 *            20091020
	 * @return List<string> 数组里面的每一项是从开始月份到结束月份排列
	 */
	public static List<string> formatDate(String starttime, String endtime) {
		String startYear = starttime.substring(0, 4);
		String endYear = endtime.substring(0, 4);
		String startMonth = starttime.substring(4, 6);
		String endMonth = endtime.substring(4, 6);

		List<string> datalist = new ArrayList<string>();
		if (endYear.compareTo(startYear) &gt; 0) {// 不在同一年
			int endY = Integer.parseInt(endYear);
			int startY = Integer.parseInt(startYear);
			int temp = endY - startY;
			switch (temp) {
				case 1: {
					// 开始年份
					int startM = Integer.parseInt(startMonth);
					int temp1 = 12 - startM;
					for (int i = 0; i  9) {
							tempMonth = (startM + i) &gt; 12 ? 12 : (startM + i);
							tempM = "" + tempMonth;
//							System.out.println("2..."+startYear+tempM);
						}
						datalist.add(startYear + tempM);
					}
	
					// 结束年份
					int endM = Integer.parseInt(endMonth);
					int temp2 = endM;
					for (int i = 0; i  endM ? endM : (1 + i);
						if (i  8) {
							tempM = "" + tempMonth;
//							System.out.println("4..."+endYear+tempM);
						}
						datalist.add(endYear + tempM);
					}
					break;
				}//end case(1)
				default: {
					// 开始年份
					int startM = Integer.parseInt(startMonth);
					int temp1 = 12 - startM;
					for (int i = 0; i  9) {
							tempMonth = (startM + i) &gt; 12 ? 12 : (startM + i);
							tempM = "" + tempMonth;
//							System.out.println("6..."+startYear+tempM);
						}
						datalist.add(startYear + tempM);
					}
					// 中间年份
					for (int i = 1; i  9) {
								date += j;
//								System.out.println("8..."+date);
							}
							datalist.add(date);
						}
					}
	
					// 结束年份
					int endM = Integer.parseInt(endMonth);
					int temp2 = endM;
					for (int i = 0; i  endM ? endM : (1 + i);
						if (i  8) {
							tempM = "" + tempMonth;
//							System.out.println("10..."+endYear+tempM);
						}
						datalist.add(endYear + tempM);
					}
					break;
				}//end default
			}//end switch

		} else if (0 == endYear.compareTo(startYear)) {// 同一年

			int startM = Integer.parseInt(startMonth);
			int endM = Integer.parseInt(endMonth);
			int temp3 = endM - startM;
			for (int i = 0; i  9) {
					tempMonth = (startM + i) &gt; 12 ? 12 : (startM + i);
					tempM = "" + tempMonth;
//					System.out.println("12..."+startYear+tempM);
				}
				datalist.add(startYear + tempM);
			}
		}
		return datalist;
	}

	public static void main(String args[]) {
		String t1 = "20080510";
		String t2 = "20081010";
		String t3 = "20080920";
		String t4 = "20081220";
		String t5 = "20090410";
		String t6 = "20090920";
		String t7 = "20091220";
		String t8 = "20101220";
	
		System.out.println(formatDate(t1, t3).size()+"--1--");
		System.out.println(formatDate(t1, t4).size()+"--2--");
		System.out.println(formatDate(t3, t4).size()+"--3--");
		System.out.println(formatDate(t2, t4).size()+"--4--");
		System.out.println(formatDate(t1, t5).size()+"--5--");
		System.out.println(formatDate(t1, t6).size()+"--6--");
		System.out.println(formatDate(t1, t7).size()+"--7--");
		System.out.println(formatDate(t2, t6).size()+"--8--");
		System.out.println(formatDate(t2, t7).size()+"--9--");
		System.out.println(formatDate(t2, t8).size()+"--10--");
	}

}
</string></string></string></string>

 

分享到:
评论

相关推荐

    链式存储结构的基本操作

    (1)用带表头的链表存放输入的数据,每读入一个数,按升序顺序插入到链表中,链表中允许两个结点有相同值。链表的头结点存放链表后面的结点个数,初始化时就生成头结点(初值为0)。链表翻转是把数据逆序(变成降序...

    matlab开发-计算和声和声速垂直于一个文件

    在MATLAB开发中,涉及到计算声学特性时,如标题所示,“计算和声和声速垂直于一个文件”通常是指处理声速垂直分布的数据。这是一个与水声学或地球物理学等领域密切相关的课题,特别是在研究海洋环境或者地质结构时。...

    js实现获取两个日期之间所有日期的方法

    总结来说,以上内容详细介绍了使用JavaScript获取两个日期之间所有日期的方法,包括日期对象的创建、字符串到日期对象的转换、日期的比较和操作,以及循环结构在日期操作中的应用。掌握这些方法和技术,对于前端开发...

    C 代码 将劳埃德迭代重复应用于一组 N 个点, 以计算质心伏罗诺伊镶嵌 (CVT) 在一维线段的内部.rar

    标题中的"C 代码 将劳埃德迭代重复应用于一组 N 个点,以计算质心伏罗诺伊镶嵌(CVT)在一维线段的内部"涉及到的是计算机图形学中的一个经典问题,即质心伏罗诺伊图(Centroid Voronoi Tesselation, CVT)的构造。...

    多位十进制数相加求和显示

    综上所述,这段汇编语言程序主要实现了将两个多位十进制数相加,并将结果显示在屏幕上的功能。通过以上分析,我们不仅了解了汇编语言的基本语法和指令集,还掌握了如何使用汇编语言进行简单的算术运算和输入/输出...

    自制8位计算机benblue芯片数据手册.zip

    在benblue芯片中,这个处理器执行8位的指令,意味着它可以一次性处理8个二进制位。8位计算机的计算能力相对于现代的32位或64位计算机来说较为有限,但它们在理解计算机基本操作和学习底层系统设计方面具有不可替代的...

    两位数减两位数退位减教学案例.pdf

    学生通过本部分学习能够理解数位与数位之间的关系,掌握退位减法的计算方法,并形成解决数学问题的能力。以下是对《两位数减两位数(退位减)》教学案例的深入解析。 首先,教学案例开始于一个引人入胜的情境——...

    电子功用-在电视系统中将打包的数字数据流同步于一个输出处理器

    在电视系统中,将打包的数字数据流同步于一个输出处理器是一个至关重要的环节,它涉及到数字电视信号处理、数据打包技术、同步控制以及处理器的工作原理等多个方面的知识点。下面,我们将详细探讨这些领域的相关内容...

    将红外传感器和可见光传感器集成于一个摄像头中

    微软所申请的这项专利,关于将红外传感器和可见光传感器集成于一个摄像头中的技术,是当前技术发展与市场需求相结合的产物。这项技术对于现代智能设备,特别是手机和笔记本电脑等移动设备的设计和性能有着重要的影响...

    swift-一个扩展让UIImageView能够聚焦于一个图片中的人脸

    这个特定的项目,"swift-一个扩展让UIImageView能够聚焦于一个图片中的人脸",提供了一个解决方案,使得UIImageView在使用AspectFill填充模式时,能够智能地识别并突出显示图片中的人脸。 在默认情况下,...

    BCDadd8.rar_ BCDadd8_4bit bcd加法器_BCDADD_bcd_bcd verilog

    8位BCD加法器意味着它可以同时处理两个8位的BCD数,即两个4位的十进制数,其最大可表示的十进制数值为99。 Verilog是一种广泛使用的硬件描述语言,它允许工程师用类似于编程语言的方式描述数字逻辑系统。在8位BCD...

    试编程求多项式y=a*a-b的值,设a存放在R2中,b存放在R3中,结果放在R6和R7中

    3. **准备乘法**: `MOVB, A`,将A寄存器的值复制到B寄存器中,这样就准备好两个相同的a值来进行乘法运算。 4. **执行乘法**: `MUL AB`,这是一条乘法指令,它将A和B寄存器中的值相乘,结果存储在A和B寄存器中。由于...

    Delphi_CDT规约CRC8校验计算源码

    CRC校验的基本思想是将数据视为一个长的二进制数,将其除以一个固定的二进制数(生成多项式),将得到的余数作为校验码附加到原数据之后。接收端在收到数据后,同样使用相同的生成多项式对数据(含校验码)进行除法...

    2023年全国计算机一级考试MSOffice知识点.docx

    位权是某一进位制的数中,每一位的大小都相应着该位上的数码乘上一个固定的数。二进制编码的优点包括运算简朴、易于物理实现、占用空间少、消耗能量小和可靠性高。 四、进制之间的转换 进制之间的转换包括十进制数...

    单片机用汇编写两个数码管显示0到99循环的程序

    ### 单片机用汇编写两个数码管显示0到99循环的程序 #### 知识点概述 本文将详细解读一个使用汇编语言编写的单片机程序,该程序的功能是在两个数码管上循环显示从0到99的数字。通过对程序代码的逐行分析,我们将...

    triangle2triangle-Test.zip_三角形相交_两个三角形_平面相交

    在3D空间中,两个三角形可能有以下几种相交情况:完全不相交、完全重合、部分重叠或者相交于一个或多个点。这里的“相交”通常指的是两个三角形的边界或内部至少有一个点是共同的。在图形渲染、碰撞检测、物理模拟等...

    中文姓名笔画计算(VBS脚本版)

    “林”字由两个“木”组成,每个“木”是四画,但“林”作为整体算双木并排,故总笔画数为8。 在VBScript中,我们可以利用内置的函数和逻辑控制来实现这个功能。通常,我们需要一个汉字到笔画的映射表,将每个汉字...

    用样本的数字特征估计总体的数字特征4PPT学习教案.pptx

    如果数据的个数是偶数,中位数则是中间两个数的平均值。中位数不受极端值的影响,能较好地代表数据的典型水平,尤其在数据存在异常值或者偏斜分布时,中位数更具代表性。 3. **平均数(均值)**:平均数是所有数据...

    51单片机 经典4位数码管显示,带闪烁位

    4位数码管通常由7个段(a, b, c, d, e, f, g)和一个或两个小数点组成,每个段都可以独立开或关,从而形成0到9的数字以及一些特殊字符。对于4位数码管,意味着它可以同时显示四位数字,通常用于显示四位整数或者两位...

    vfp计算机考试题.pdf

    连接则是将两个或多个关系的元组依据公共属性组合成一个新的关系。 3. **数据模型**:VFP基于的关系数据模型是一种数据组织方式,其中数据被表示为二维表格形式,每个表格代表一个关系。此外,VFP不支持层次数据...

Global site tag (gtag.js) - Google Analytics