搜索到关键字为 数组 的相关日志 3 篇: ("[空格]和"+"[加号] 可作搜索分隔符号使用.)

Java比较两个时间相差多少天,多少个月,多少年 cloudy

在项目开发当中,我们时常碰到要比较两个时间或者与当前时间相差多少天,多少个月,多少年的问题。

本人结合网上的一些例子,稍作修改,提供出下面示例,与网友们分享。

java代码
  1. package com.test;  
  2. import java.text.DateFormat;  
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Calendar;  
  5. import java.util.Date;  
  6. /**  
  7.  * @description 日期比较天 月 年  
  8.  * @author www.javawind.net  
  9.  */ 
  10. public class DateTest {  
  11.     public static void main(String[] args) {  
  12.         String date = "2008-06-12";  
  13.           
  14.         DateTest.compareDate(date, null0);  
  15.         DateTest.compareDate(date, null1);  
  16.         DateTest.compareDate(date, null2);  
  17.           
  18.         date = "2006-06-03";          
  19.         DateTest.compareDate(date, null0);  
  20.         DateTest.compareDate(date, null1);  
  21.         DateTest.compareDate(date, null2);  
  22.         DateTest.compareDate(date, "2009-06-01"0);  
  23.         DateTest.compareDate(date, "2009-06-01"1);  
  24.         DateTest.compareDate(date, "2009-06-01"2);  
  25.     }  
  26.       
  27.     /**  
  28.      * @param date1 需要比较的时间 不能为空(null),需要正确的日期格式  
  29.      * @param date2 被比较的时间  为空(null)则为当前时间  
  30.      * @param stype 返回值类型   0为多少天,1为多少个月,2为多少年  
  31.      * @return  
  32.      */ 
  33.     public static int compareDate(String date1,String date2,int stype){  
  34.         int n = 0;  
  35.           
  36.         String[] u = {"天","月","年"};  
  37.         String formatStyle = stype==1?"yyyy-MM":"yyyy-MM-dd";  
  38.           
  39.         date2 = date2==null?DateTest.getCurrentDate():date2;  
  40.           
  41.         DateFormat df = new SimpleDateFormat(formatStyle);  
  42.         Calendar c1 = Calendar.getInstance();  
  43.         Calendar c2 = Calendar.getInstance();  
  44.         try {  
  45.             c1.setTime(df.parse(date1));  
  46.             c2.setTime(df.parse(date2));  
  47.         } catch (Exception e3) {  
  48.             System.out.println("wrong occured");  
  49.         }  
  50.         //List list = new ArrayList();  
  51.         while (!c1.after(c2)) {                     // 循环对比,直到相等,n 就是所要的结果  
  52.             //list.add(df.format(c1.getTime()));    // 这里可以把间隔的日期存到数组中 打印出来  
  53.             n++;  
  54.             if(stype==1){  
  55.                 c1.add(Calendar.MONTH, 1);          // 比较月份,月份+1  
  56.             }  
  57.             else{  
  58.                 c1.add(Calendar.DATE, 1);           // 比较天数,日期+1  
  59.             }  
  60.         }  
  61.           
  62.         n = n-1;  
  63.           
  64.         if(stype==2){  
  65.             n = (int)n/365;  
  66.         }     
  67.           
  68.         System.out.println(date1+" -- "+date2+" 相差多少"+u[stype]+":"+n);        
  69.         return n;  
  70.     }  
  71.       
  72.     /**  
  73.      * 得到当前日期  
  74.      * @return  
  75.      */ 
  76.     public static String getCurrentDate() {  
  77.         Calendar c = Calendar.getInstance();  
  78.         Date date = c.getTime();  
  79.         SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd");  
  80.         return simple.format(date);  
  81.     }  

运行结果:

2008-06-12 -- 2009-06-09 相差多少天:362
2008-06-12 -- 2009-06-09 相差多少月:12
2008-06-12 -- 2009-06-09 相差多少年:0
2006-06-03 -- 2009-06-09 相差多少天:1102
2006-06-03 -- 2009-06-09 相差多少月:36
2006-06-03 -- 2009-06-09 相差多少年:3
...

SQL 存储过程使用CHARINDEX分隔逗号,间隔的数组 cloud

这里假设有 一串数组变量 "appNum1,appNum2,appNum3,appNum4,appNum5,appNum6,appNum7,appNum8"

当我们需要在存储过程中遍历这个数组的子项时,我们可以通过 CHARINDEX 或者结合Left,Right来分隔和遍历它

注意:由于字符串index的计算问题,下面定义变量的时候,需要在最后面增加一个逗号",",否则遍历的时候将缺少最后一个子项

方法一:

代码
  1. declare @item varchar(50),@rowName varchar(200)  
  2. declare @m int,@n int,@i int 
  3. Set @rowName='appNum1,appNum2,appNum3,appNum4,appNum5,appNum6,appNum7,appNum8,' 
  4. Set @m=CHARINDEX(',',@rowName)  
  5. Set @n=1  
  6. Set @i=0  
  7. WHILE  @m>0  
  8.     BEGIN         
  9.         Set @item=SubString(@rowName,@n,@m-@n)  
  10.         Print Cast(@i as varchar)+'-'+@item  
  11.         Set @i=@i+1  
  12.         Set @n=@m+1       
  13.         Set @m=CHARINDEX(',',@rowName,@n)  
  14.     END 

方法二:

代码
  1. DECLARE @s varchar(4000)  
  2. DECLARE @i int 
  3. Set @i=0  
  4. SET @s='appNum1,appNum2,appNum3,appNum4,appNum5,appNum6,appNum7,appNum8,'     
  5. WHILE CHARINDEX(',',@s)>0     
  6.     BEGIN     
  7.         Print Cast(@i as varchar)+'-'+LEFT(@s,CHARINDEX(',',@s)-1)  
  8.         Set @i=@i+1    
  9.         SET @s=RIGHT(@s,LEN(@s)-CHARINDEX(',',@s))     
  10.     END 

两个方法的运行结果都是:
0-appNum1
1-appNum2
2-appNum3
3-appNum4
4-appNum5
...

JSP内建对象- - suny

① out - javax.servlet.jsp.jspWriter
   out对象用于把结果输出到网页上。

方法:
1. void clear() ;
   清除输出缓冲区的内容,但是不输出到客户端。

2. void clearBuffer() ;
   清除输出缓冲区的内容,并输出到客户端。

3. void close() ;
   关闭输出流,清除所有内容。

4. void flush() ;
...