posts - 41, comments - 15, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          如果大家在ORACLE里面用慣了Sequence,要在SqlServer里實現(xiàn)Sequence,就會發(fā)現(xiàn)沒有現(xiàn)成的Sequence對象可以Create了。那應該怎么辦呢?

          當然這點小問題是難不倒我們程序員的,“max+1啊”,有人會說這樣的方式。是的,這種方式實現(xiàn)起來也比較簡單。當然你也許還會說,最Sql的方式是采用identity列,自增的方式去增加就ok了。但是這樣的列如果要實現(xiàn)“YYYYMMDD”+“部門編號(如ZX)”+Sequence值 (例如:20100707ZX000002)的格式就不行了。還是老老實實用存儲過程來取得一個Sequence值吧,使用起來也就隨心所欲了。

           

          網上常見的一個存儲過程為 為當前庫所有用到Sequence建一張表,譬如“AllSequence”,內含四個字段【名字,起點值,遞增值,當前值】,創(chuàng)建Sequence的時候就創(chuàng)建一條記錄,獲取Sequence的時候就從對應行的當前值按遞增值增加得到。

           

          在并發(fā)性請求不那么高的系統(tǒng)里,這種過程是沒有問題的。但是并發(fā)性請求一旦處于某個量級以后,這個過程常常會遇到問題。

           

          以下為一個改進方法,適合于高吞吐量的訪問請求,比如每秒數(shù)千次的請求:

          復制代碼
          -- 假定要給T_0101001創(chuàng)建一個Sequence

          -- 創(chuàng)建表SeqT_0101001
          create table SeqT_0101001(

                
          -- ID列為自增列
                SeqID int identity(1,1primary key,

                
          -- Sequence值
                SeqVal varchar(1)
          )

          -- 創(chuàng)建從SeqT_0101001表獲取最新Sequence值的存儲過程
          create procedure P_GetNewSeqVal_SeqT_0101001
          as
          begin
                
          -- 聲明新Sequence值變量
                declare @NewSeqValue int

                
          -- 設置插入、刪除操作后的條數(shù)顯示取消
                set NOCOUNT ON

                
          -- 插入新值到SeqT_0101001表
                insert into SeqT_0101001 (SeqVal) values ('a')   

                
          -- 設置新Sequence值為插入到SeqT_0101001表的標識列內的最后一個標識值  
                set @NewSeqValue = scope_identity()   

                --如果組合的Sequence值<999999999(大于的話數(shù)值會溢出),如:“YYYY”+5位的Sequence值(201019988),可以采用下面的方式來實現(xiàn)
                --set @NewSeqValue = Convert(char(4),Getdate(),112) + right('00000'+CAST(scope_identity() AS varchar(5)),5)
                --這樣直接Print @NewSeqVal 就可以得到類似“201019988”的Sequence值

                
          -- 刪除SeqT_0101001表(不顯示被鎖行)
                delete from SeqT_0101001 WITH (READPAST)

          -- 返回新Sequence值
          return @NewSeqValue

          end

          --使用Sequence
          Declare @NewSeqVal int
          Exec @NewSeqVal =  P_GetNewSeqVal_SeqT_0101001
          Print @NewSeqVal
          Print Convert(char(8),Getdate(),112) +'ZX'+ right('000000'+CAST(@NewSeqVal AS varchar(5)),6)
          復制代碼

           


          要獲取剛才我們提到的 “20100707ZX000002”這種格式的話,下面這樣就可以了
          Print Convert(char(8),Getdate(),112) +'ZX'+ right('000000'+CAST(@NewSeqVal AS varchar(5)),6)



          缺點:不能直接在非存儲過程的select的語句中直接使用。

          信息來源:http://www.cnblogs.com/heekui/archive/2008/07/24/1250842.html

          posted @ 2012-08-06 14:48 yuhaibo736 閱讀(1113) | 評論 (0)編輯 收藏

          Mongo是沒有l(wèi)ike查詢的方式的 
          要進行模糊匹配只能借助于正則表達式


          Java代碼:

               Mongo m=new Mongo();  

                DB db=m.getDB("UserDB");  

                DBCollection collection=db.getCollection("userCollection");  

                 

                BasicDBObject cond=new BasicDBObject();          


                if(province!=""){  

                   cond.put("province", province);

                }  

                if(area!=""){  

                   cond.put("area", area);  

                }              

                if(keywords!=""){  

                    Pattern pattern=Pattern.compile("^.*"+keywords+".*$");            

                    cond.put("name", pattern);

                }  

           

                DBCursor returns=collection.find(cond);  

           

          還有一種是mongoDB 和Spring結合的 Spring-data的模式查詢  代碼如下 :

                 public List<User> findUserTop9(String s) {  

                       mongoTemplate.setDatabaseName("UserDB");

           

                       mongoTemplate.setDefaultCollectionName("userColl");  

                       List<User> users = mongoTemplate.find(new Query(new Criteria(      "name").regex(".*?"+"張"+".*")).limit(9), User.class);  

                       return users;

                  }  

          posted @ 2012-06-27 15:44 yuhaibo736 閱讀(10451) | 評論 (1)編輯 收藏

          CronTrigger配置格式:

          格式: [秒] [分] [小時] [日] [月] [周] [年]

           序號 說明
           是否必填  允許填寫的值 允許的通配符
           1  秒  是  0-59    , - * /
           2  分  是  0-59
            , - * /
           3 小時  是  0-23   , - * /
           4  日  是  1-31   , - * ? / L W
           5  月  是  1-12 or JAN-DEC   , - * /
           6  周  是  1-7 or SUN-SAT   , - * ? / L #
           7  年  否  empty 或 1970-2099  , - * /


          通配符說明:
          * 表示所有值. 例如:在分的字段上設置 "*",表示每一分鐘都會觸發(fā)。
          ? 表示不指定值。使用的場景為不需要關心當前設置這個字段的值。例如:要在每月的10號觸發(fā)一個操作,但不關心是周幾,所以需要周位置的那個字段設置為"?" 具體設置為 0 0 0 10 * ?
          - 表示區(qū)間。例如 在小時上設置 "10-12",表示 10,11,12點都會觸發(fā)。
          , 表示指定多個值,例如在周字段上設置 "MON,WED,FRI" 表示周一,周三和周五觸發(fā)
          / 用于遞增觸發(fā)。如在秒上面設置"5/15" 表示從5秒開始,每增15秒觸發(fā)(5,20,35,50)。 在月字段上設置'1/3'所示每月1號開始,每隔三天觸發(fā)一次。
          L 表示最后的意思。在日字段設置上,表示當月的最后一天(依據(jù)當前月份,如果是二月還會依據(jù)是否是潤年[leap]), 在周字段上表示星期六,相當于"7"或"SAT"。如果在"L"前加上數(shù)字,則表示該數(shù)據(jù)的最后一個。例如在周字段上設置"6L"這樣的格式,則表示“本 月最后一個星期五"
          W 表示離指定日期的最近那個工作日(周一至周五). 例如在日字段上設置"15W",表示離每月15號最近的那個工作日觸發(fā)。如果15號正好是周六,則找最近的周五(14號)觸發(fā), 如果15號是周未,則找最近的下周一(16號)觸發(fā).如果15號正好在工作日(周一至周五),則就在該天觸發(fā)。如果指定格式為 "1W",它則表示每月1號往后最近的工作日觸發(fā)。如果1號正是周六,則將在3號下周一觸發(fā)。(注,"W"前只能設置具體的數(shù)字,不允許區(qū)間"-").

          小提示

          'L'和 'W'可以一組合使用。如果在日字段上設置"LW",則表示在本月的最后一個工作日觸發(fā)(一般指發(fā)工資

          # 序號(表示每月的第幾個周幾),例如在周字段上設置"6#3"表示在每月的第三個周六.注意如果指定"#5",正好第五周沒有周六,則不會觸發(fā)該配置(用在母親節(jié)和父親節(jié)再合適不過了)

          小提示

          周字段的設置,若使用英文字母是不區(qū)分大小寫的 MON 與mon相同.


                 
          常用示例:
           

          0 0 12 * * ? 每天12點觸發(fā)
          0 15 10 ? * * 每天10點15分觸發(fā)
          0 15 10 * * ? 每天10點15分觸發(fā)
          0 15 10 * * ? * 每天10點15分觸發(fā)
          0 15 10 * * ? 2005 2005年每天10點15分觸發(fā)
          0 * 14 * * ? 每天下午的 2點到2點59分每分觸發(fā)
          0 0/5 14 * * ? 每天下午的 2點到2點59分(整點開始,每隔5分觸發(fā))
          0 0/5 14,18 * * ? 每天下午的 2點到2點59分(整點開始,每隔5分觸發(fā))
          每天下午的 18點到18點59分(整點開始,每隔5分觸發(fā))
          0 0-5 14 * * ? 每天下午的 2點到2點05分每分觸發(fā)
          0 10,44 14 ? 3 WED 3月分每周三下午的 2點10分和2點44分觸發(fā)
          0 15 10 ? * MON-FRI 從周一到周五每天上午的10點15分觸發(fā)
          0 15 10 15 * ? 每月15號上午10點15分觸發(fā)
          0 15 10 L * ? 每月最后一天的10點15分觸發(fā)
          0 15 10 ? * 6L 每月最后一周的星期五的10點15分觸發(fā)
          0 15 10 ? * 6L 2002-2005 從2002年到2005年每月最后一周的星期五的10點15分觸發(fā)
          0 15 10 ? * 6#3 每月的第三周的星期五開始觸發(fā)
          0 0 12 1/5 * ? 每月的第一個中午開始每隔5天觸發(fā)一次
          0 11 11 11 11 ? 每年的11月11號 11點11分觸發(fā)(光棍節(jié))

          posted @ 2012-06-04 17:22 yuhaibo736 閱讀(192) | 評論 (0)編輯 收藏

          1、下載Quartz java包copy到WEB-INF/lib下
          2、先寫一個抽象類繼承QuartzJobBean
          package org.yhb.task;

          import org.apache.commons.logging.Log;
          import org.apache.commons.logging.LogFactory;
          import org.quartz.JobExecutionContext;
          import org.quartz.JobExecutionException;
          import org.springframework.scheduling.quartz.QuartzJobBean;

          /**
           *
           * @author yuhb create on 2012-6-4
           *
           */
          public abstract class AbstractTask extends QuartzJobBean {
              protected final Log log = LogFactory.getLog(this.getClass());
              protected void executeInternal(JobExecutionContext context)
                      throws JobExecutionException {
                  this.execute();
              }
              protected abstract void execute();
          }

          然后寫一個類繼承上面的抽象類

          package org.yhb.task;

          public class MyTask extends AbstractTask {
              @Override
              protected void execute() {
                  System.out.println("測試定時任務!!!");
              }
          }

          3、編寫beans-quarz.xml配置文件
          <?xml version="1.0" encoding="UTF-8" ?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
          <beans>
              <!-- ============================= Spring Quartz ================================ -->
              <bean id="myTask" class="org.springframework.scheduling.quartz.JobDetailBean">
                  <property name="jobClass" value="org.yhb.task.MyTask" />
                  <property name="jobDataAsMap">
                      <map>
                          <entry key="timeout">
                              <value>60</value>
                          </entry>
                      </map>
                  </property>
              </bean>
              <!-- 每隔2分鐘觸發(fā)一次-->
              <bean id="myTaskTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
                  <property name="jobDetail">
                      <ref bean="myTask" />
                  </property>
                  <property name="cronExpression">
                      <value>0 0/2 * * * ?</value>
                  </property>
              </bean>
              <!-- ########  總調配中心 ########## -->    
              <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
                  <property name="triggers">
                      <list>
                          <ref local="myTaskTrigger" />
                       </list>
                  </property>
              </bean>    
          </beans>
          4、在web.xml中進行配置
               <context-param>
                  <param-name>contextConfigLocation</param-name>
                  <param-value>/WEB-INF/beans-quarz.xml</param-value>
              </context-param>
              <listener>
                  <listener-class>
                      org.springframework.web.context.ContextLoaderListener
                  </listener-class>
              </listener>

          完成上面四項后,啟動服務器就執(zhí)行定時任務了。

          posted @ 2012-06-04 16:25 yuhaibo736 閱讀(1479) | 評論 (0)編輯 收藏

          1.下載安裝:plsqldev
              注意:不要安裝在默認的C:\Program Files (x86)目錄下,否則會報錯,原因是不能解析這個帶()的路徑
          2.下載安轉Oracle32位客戶端
              下載Oracle客戶端軟件:instantclient-basic-win32-11.1.0.7.0.zip  http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html
          3.配置客戶端
          1).解壓instantclient-basic-win32-11.1.0.7.0.zip后的instantclient_11_2文件放到到D:\oracle_client(具體放那個盤里,自己決定)下,在instantclient_11_2目錄下新建network文件,在network目錄下建admin文件,在admin文件下建tnsnames.ora這個文件:
          bd22 =
            (DESCRIPTION =
              (ADDRESS_LIST =
                (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
              )
              (CONNECT_DATA =
                (SID = orcl)
              )
            )
                     
          2)啟動PL/SQL Developer ,點擊取消不要登錄,在Tools\Perferences 下的Connection 配置Oracle_Home和OCI Library,如下:
          OracleHome:D:\oracle_client\instantclient_11_2
          OCI library: D:\oracle_client\instantclient_11_2\oci.dll

          3)啟動PL/SQL Developer,登陸DB

          posted @ 2012-05-31 13:11 yuhaibo736 閱讀(15677) | 評論 (1)編輯 收藏


          MyEclipse9.0與其他版本不一樣:


          1.首先下載svn的zip包:http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240


           
          我的是:site-1.6.18.zip


          2.將下載的包解壓,*.xml全部不要,只保留plugins和features兩個文件夾


          3.在任意位置建立文件夾,命名隨意,只要符合規(guī)范,將上面的兩個文件夾拷貝到剛才所建立的文件路徑下,我在E盤下建立如下路徑:E:\plugins\svn,plugins和features兩個文件夾放在svn下


          4.建立一個java程序:


          import java.io.File; 
          import java.util.ArrayList; 
          import java.util.List; 

          /**
          * MyEclipse9 插件配置代碼生成器
          *
          *
          */

          public class PluginConfigCreator 

              public PluginConfigCreator()

              public void print(String path) 
                  List<String> list = getFileList(path); 
                  if (list == null)
                      return; 
                  } 

                  int length = list.size(); 
                  for (int i = 0; i < length; i++)
                      String result = ""; 
                      String thePath = getFormatPath(getString(list.get(i))); 
                      File file = new File(thePath); 
                      if (file.isDirectory())
                          String fileName = file.getName(); 
                          if (fileName.indexOf("_") < 0)
                              print(thePath); 
                              continue; 
                          } 
                          String[] filenames = fileName.split("_"); 
                          String filename1 = filenames[0]; 
                          String filename2 = filenames[1]; 
                          result = filename1 + "," + filename2 + ",file:/" + path + "\\"  + fileName + "\\,4,false"; 
                          System.out.println(result); 
                      } else if (file.isFile()) 
                          String fileName = file.getName(); 
                          if (fileName.indexOf("_") < 0)
                              continue; 
                          } 
                          int last = fileName.lastIndexOf("_");// 最后一個下劃線的位置 
                          String filename1 = fileName.substring(0, last); 
                         String filename2 = fileName.substring(last + 1, fileName.length() - 4); 
                          result = filename1 + "," + filename2 + ",file:/" + path + "\\" + fileName + ",4,false"; 
                          System.out.println(result); 
                      } 
                  } 
              } 

              public List<String> getFileList(String path) 
                  path = getFormatPath(path); 
                  path = path + "/"; 
                  File filePath = new File(path); 
                  if (!filePath.isDirectory()) 
                      return null; 
                  } 
                  String[] filelist = filePath.list(); 
                  List<String> filelistFilter = new ArrayList<String>(); 
                  for (int i = 0; i < filelist.length; i++) 
                      String tempfilename = getFormatPath(path + filelist[i]); 
                      filelistFilter.add(tempfilename); 
                  } 
                  return filelistFilter; 
              } 

              public String getString(Object object) 
                  if (object == null) 
                      return ""; 
                  } 
                  return String.valueOf(object); 
              } 

              public String getFormatPath(String path) 
                  path = path.replaceAll("\\\\", "/"); 
                  path = path.replaceAll("http://", "/"); 
                  return path; 
              } 

              public static void main(String[] args) 
                  /*你的插件的安裝目錄*/
                      String plugin = "E:\\plugins\\svn";   //這里的目錄路徑要注意
                  new PluginConfigCreator().print(plugin); 
              } 
          }


          運行該程序,將生成的控制臺數(shù)據(jù)拷貝復制到bundles.info文件中,該文件的所在路徑是MyEclipse的安裝路徑,我采用的是默認路徑:


          D:\MyEclipse\MyEclipse-9.0M1\configuration\org.eclipse.equinox.simpleconfigurator


          最后重啟MyEclipse就可以使用SVN了

          posted @ 2012-05-30 13:23 yuhaibo736 閱讀(2122) | 評論 (2)編輯 收藏

          jQuery.ajax({
                 url: 'getAssessmentStaffEvaluation.html',
                 type: 'post',
                 data: 'userId=' + userid + '&startDate=' + startDate + '&endDate=' + endDate,
                 dataType:'json',
                 success: function(returnObj){
                  $("#countTd").text("服務客戶次數(shù):" + returnObj.customerService + "    閱讀報告篇數(shù):" + returnObj.reportReadLog +"    撰寫產品篇數(shù):" + returnObj.htreport + "    完成任務情況:" + returnObj.task + "    工作申請情況:" + returnObj.applyTask);
                 }
                });

          public ModelAndView getAssessmentStaffEvaluationHandler(HttpServletRequest request, HttpServletResponse response)
                   throws ServletException, IOException, ParseException {

            String userId = Utils.trim(request.getParameter("userId"));
            String startDate = Utils.trim(request.getParameter("startDate"));
            String endDate = Utils.trim(request.getParameter("endDate"));
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Map param = new HashMap();
            param.put("inputid", userId);
            param.put("beginDate", sdf.parse(startDate));
            param.put("endDate", sdf.parse(endDate));
            Response response1 = customerServiceService.getCustomerServiceCount(param);
            Integer count1 = response1.getReturnInt();

            Calendar c = Calendar.getInstance();
            c.setTime(sdf.parse(endDate));
            c.add(Calendar.DATE, 1);
            Map param1 = new HashMap();
            param1.put("userid", userId);
            param1.put("beginDate", sdf.parse(startDate));
            param1.put("endDate", c.getTime());
            Response response2 = reportReadLogService.getReportReadLogCount(param1);
            Integer count2 = (Integer) response2.getReturnObject();

            Response response3 = htreportService.getHtreportCount(param1);
            Integer count3 = (Integer) response3.getReturnObject();

            Map param2 = new HashMap();
            param2.put("createId", userId);
            param2.put("flag", 1);
            param2.put("startTime", sdf.parse(startDate));
            param2.put("endTime", c.getTime());
            Response response4 = taskService.getTaskCount(param2);
            Integer count4 = (Integer) response4.getReturnObject();

            Map param3 = new HashMap();
            param3.put("createId", userId);
            param3.put("beginDate", sdf.parse(startDate));
            param3.put("endDate", c.getTime());
            Response response5 = applyTaskService.getApplyTaskCount(param3);
            Integer count5 = (Integer) response5.getReturnObject();

            response.setContentType("text/json");
            PrintWriter out = response.getWriter();
            out.println("{\"customerService\":\"" + count1 + "\", \"reportReadLog\":\"" + count2 + "\", \"htreport\":\""
                    + count3 + "\", \"task\":\"" + count4 + "\", \"applyTask\":\"" + count5 + "\"}");
            out.flush();
            out.close();

            return null;
           }

          posted @ 2012-04-18 16:36 yuhaibo736 閱讀(2289) | 評論 (2)編輯 收藏

          最主要的是設置font
          
          柱狀圖(CategoryPlot):
              CategoryPlot plot=chart.getCategoryPlot();//獲取圖表區(qū)域對象
             CategoryAxis domainAxis=plot.getDomainAxis();
              //水平底部列表
              domainAxis.setLabelFont(new Font("黑體",Font.BOLD,14));
              //水平底部標題
              domainAxis.setTickLabelFont(new Font("宋體",Font.BOLD,12));
              //垂直標題
              ValueAxis rangeAxis=plot.getRangeAxis();//獲取柱狀
              rangeAxis.setLabelFont(new Font("黑體",Font.BOLD,15));
               chart.getLegend().setItemFont(new Font("黑體", Font.BOLD, 15));
          餅圖(PiePlot):
               JFreeChart chart = ChartFactory.createPieChart3D("IT行業(yè)職業(yè)分布圖", dataset, true, false, false);
              chart.getTitle().setFont(new Font("黑體",Font.BOLD,20));//設置標題字體
              PiePlot piePlot= (PiePlot) chart.getPlot();//獲取圖表區(qū)域對象
              piePlot.setLabelFont(new Font("黑體",Font.BOLD,10));
              chart.getLegend().setItemFont(new Font("黑體",Font.BOLD,10));
          時序圖(TimeSeries)  
             XYPlot plot = (XYPlot) chart.getPlot();
              //縱軸字體
              plot.getRangeAxis().setLabelFont(new Font("宋體", Font.BOLD, 15));
              //橫軸框里的標題字體
              chart.getLegend().setItemFont(new Font("宋體", Font.ITALIC, 15));
              //橫軸列表字體
              plot.getDomainAxis().setTickLabelFont(new Font("新宋體", 1, 15));
              //橫軸小標題字體
              plot.getDomainAxis().setLabelFont(new Font("新宋體", 1, 12));
          折線圖
          chart.getTitle().setFont(new Font("宋體", Font.BOLD, 15));
             chart.getLegend().setItemFont(new Font("黑體", Font.BOLD, 15));
             CategoryAxis domainAxis = plot.getDomainAxis();   
             /*------設置X軸坐標上的文字-----------*/ 
             domainAxis.setTickLabelFont(new Font("黑體", Font.PLAIN, 11));   
             /*------設置X軸的標題文字------------*/ 
             domainAxis.setLabelFont(new Font("宋體", Font.PLAIN, 12));   
             NumberAxis numberaxis = (NumberAxis) plot.getRangeAxis();   
             /*------設置Y軸坐標上的文字-----------*/ 
             numberaxis.setTickLabelFont(new Font("黑體", Font.PLAIN, 12));   
              
             /*------設置Y軸的標題文字------------*/ 
             numberaxis.setLabelFont(new Font("黑體", Font.PLAIN, 12)) 

          posted @ 2012-04-16 14:55 yuhaibo736 閱讀(1154) | 評論 (0)編輯 收藏

          方式一:

          四舍五入
          double   f   =   111231.5585;
          BigDecimal   b   =   new   BigDecimal(f);
          double   f1   =   b.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();
          保留兩位小數(shù)

          方式二:

          java.text.DecimalFormat   df   =new   java.text.DecimalFormat(”#.00″);
          df.format(你要格式化的數(shù)字);

          例:new java.text.DecimalFormat(”#.00″).format(3.1415926)

          #.00 表示兩位小數(shù) #.0000四位小數(shù) 以此類推…

          方式三:

          double d = 3.1415926;

          String result = String .format(”%.2f”);

          %.2f %. 表示 小數(shù)點前任意位數(shù)   2 表示兩位小數(shù) 格式后的結果為f 表示浮點型。

          方式四:

          此外如果使用struts標簽做輸出的話,有個format屬性,設置為format="0.00"就是保留兩位小數(shù)

          例如:<bean:write name="entity" property="dkhAFSumPl"  format="0.00" />

          posted @ 2012-03-30 14:28 yuhaibo736 閱讀(3725) | 評論 (0)編輯 收藏

          package com.hefeng.test;

            import java.text.DateFormat;

            import java.text.ParsePosition;

            import java.text.SimpleDateFormat;

            import java.util.Calendar;

            import java.util.Date;

            import java.util.GregorianCalendar;

            public class TimeTest {

            //用來全局控制上一周,本周,下一周的周數(shù)變化

            private  int weeks = 0;

            private int MaxDate;//一月最大天數(shù)

            private int MaxYear;//一年最大天數(shù)

            public static void main(String[] args) {

            TimeTest tt = new TimeTest();

            System.out.println("獲取當天日期:"+tt.getNowTime("yyyy-MM-dd"));

            System.out.println("獲取本周一日期:"+tt.getMondayOFWeek());

            System.out.println("獲取本周日的日期~:"+tt.getCurrentWeekday());

            System.out.println("獲取上周一日期:"+tt.getPreviousWeekday());

            System.out.println("獲取上周日日期:"+tt.getPreviousWeekSunday());

            System.out.println("獲取下周一日期:"+tt.getNextMonday());

            System.out.println("獲取下周日日期:"+tt.getNextSunday());

            System.out.println("獲得相應周的周六的日期:"+tt.getNowTime("yyyy-MM-dd"));

            System.out.println("獲取本月第一天日期:"+tt.getFirstDayOfMonth());

            System.out.println("獲取本月最后一天日期:"+tt.getDefaultDay());

            System.out.println("獲取上月第一天日期:"+tt.getPreviousMonthFirst());

            System.out.println("獲取上月最后一天的日期:"+tt.getPreviousMonthEnd());

            System.out.println("獲取下月第一天日期:"+tt.getNextMonthFirst());

            System.out.println("獲取下月最后一天日期:"+tt.getNextMonthEnd());

            System.out.println("獲取本年的第一天日期:"+tt.getCurrentYearFirst());

            System.out.println("獲取本年最后一天日期:"+tt.getCurrentYearEnd());

            System.out.println("獲取去年的第一天日期:"+tt.getPreviousYearFirst());

            System.out.println("獲取去年的最后一天日期:"+tt.getPreviousYearEnd());

            System.out.println("獲取明年第一天日期:"+tt.getNextYearFirst());

            System.out.println("獲取明年最后一天日期:"+tt.getNextYearEnd());

            System.out.println("獲取本季度第一天到最后一天:"+tt.getThisSeasonTime(11));

            System.out.println("獲取兩個日期之間間隔天數(shù)2008-12-1~2008-9.29:"+TimeTest.getTwoDay("2008-12-1","2008-9-29"));

            }

            public static String getTwoDay(String sj1, String sj2) {

            SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");

            long day = 0;

            try {

            java.util.Date date = myFormatter.parse(sj1);

            java.util.Date mydate = myFormatter.parse(sj2);

            day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);

            } catch (Exception e) {

            return "";

            }

            return day + "";

            }

            public static String getWeek(String sdate) {

            // 再轉換為時間

            Date date = TimeTest.strToDate(sdate);

            Calendar c = Calendar.getInstance();

            c.setTime(date);

            // int hour=c.get(Calendar.DAY_OF_WEEK);

            // hour中存的就是星期幾了,其范圍 1~7

            // 1=星期日 7=星期六,其他類推

            return new SimpleDateFormat("EEEE").format(c.getTime());

            }

            public static Date strToDate(String strDate) {

            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");

            ParsePosition pos = new ParsePosition(0);

            Date strtodate = formatter.parse(strDate, pos);

            return strtodate;

            }

            public static long getDays(String date1, String date2) {

            if (date1 == null || date1.equals(""))

            return 0;

            if (date2 == null || date2.equals(""))

            return 0;

            // 轉換為標準時間

            SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");

            java.util.Date date = null;

            java.util.Date mydate = null;

            try {

            date = myFormatter.parse(date1);

            mydate = myFormatter.parse(date2);

            } catch (Exception e) {

            }

            long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);

            return day;

            }

            // 計算當月最后一天,返回字符串

            public String getDefaultDay(){

            String str = "";

            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

            Calendar lastDate = Calendar.getInstance();

            lastDate.set(Calendar.DATE,1);//設為當前月的1號

            lastDate.add(Calendar.MONTH,1);//加一個月,變?yōu)橄略碌?號

            lastDate.add(Calendar.DATE,-1);//減去一天,變?yōu)楫斣伦詈笠惶?/p>

            str=sdf.format(lastDate.getTime());

            return str;

            }

            // 上月第一天

            public String getPreviousMonthFirst(){

            String str = "";

            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

            Calendar lastDate = Calendar.getInstance();

            lastDate.set(Calendar.DATE,1);//設為當前月的1號

            lastDate.add(Calendar.MONTH,-1);//減一個月,變?yōu)橄略碌?號

            //lastDate.add(Calendar.DATE,-1);//減去一天,變?yōu)楫斣伦詈笠惶?/p>

            str=sdf.format(lastDate.getTime());

            return str;

            }

            //獲取當月第一天

            public String getFirstDayOfMonth(){

            String str = "";

            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

            Calendar lastDate = Calendar.getInstance();

            lastDate.set(Calendar.DATE,1);//設為當前月的1號

            str=sdf.format(lastDate.getTime());

            return str;

            }

           

           

           

            // 獲得本周星期日的日期

            public String getCurrentWeekday() {

            weeks = 0;

            int mondayPlus = this.getMondayPlus();

            GregorianCalendar currentDate = new GregorianCalendar();

            currentDate.add(GregorianCalendar.DATE, mondayPlus+6);

            Date monday = currentDate.getTime();

            DateFormat df = DateFormat.getDateInstance();

            String preMonday = df.format(monday);

            return preMonday;

            }

            //獲取當天時間

            public String getNowTime(String dateformat){

            Date   now   =   new   Date();

            SimpleDateFormat   dateFormat   =   new   SimpleDateFormat(dateformat);//可以方便地修改日期格式

            String  hehe  = dateFormat.format(now);

            return hehe;

            }

            // 獲得當前日期與本周日相差的天數(shù)

            private int getMondayPlus() {

            Calendar cd = Calendar.getInstance();

            // 獲得今天是一周的第幾天,星期日是第一天,星期二是第二天......

            int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK)-1;         //因為按中國禮拜一作為第一天所以這里減1

            if (dayOfWeek == 1) {

            return 0;

            } else {

            return 1 - dayOfWeek;

            }

            }

            //獲得本周一的日期

            public String getMondayOFWeek(){

            weeks = 0;

            int mondayPlus = this.getMondayPlus();

            GregorianCalendar currentDate = new GregorianCalendar();

            currentDate.add(GregorianCalendar.DATE, mondayPlus);

            Date monday = currentDate.getTime();

            DateFormat df = DateFormat.getDateInstance();

            String preMonday = df.format(monday);

            return preMonday;

            }

            //獲得相應周的周六的日期

            public String getSaturday() {

            int mondayPlus = this.getMondayPlus();

            GregorianCalendar currentDate = new GregorianCalendar();

            currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks + 6);

            Date monday = currentDate.getTime();

            DateFormat df = DateFormat.getDateInstance();

            String preMonday = df.format(monday);

            return preMonday;

            }

            // 獲得上周星期日的日期

            public String getPreviousWeekSunday() {

            weeks=0;

            weeks--;

            int mondayPlus = this.getMondayPlus();

            GregorianCalendar currentDate = new GregorianCalendar();

            currentDate.add(GregorianCalendar.DATE, mondayPlus+weeks);

            Date monday = currentDate.getTime();

            DateFormat df = DateFormat.getDateInstance();

            String preMonday = df.format(monday);

            return preMonday;

            }

            // 獲得上周星期一的日期

            public String getPreviousWeekday() {

            weeks--;

            int mondayPlus = this.getMondayPlus();

            GregorianCalendar currentDate = new GregorianCalendar();

            currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);

            Date monday = currentDate.getTime();

            DateFormat df = DateFormat.getDateInstance();

            String preMonday = df.format(monday);

            return preMonday;

            }

            // 獲得下周星期一的日期

            public String getNextMonday() {

            weeks++;

            int mondayPlus = this.getMondayPlus();

            GregorianCalendar currentDate = new GregorianCalendar();

            currentDate.add(GregorianCalendar.DATE, mondayPlus + 7);

            Date monday = currentDate.getTime();

            DateFormat df = DateFormat.getDateInstance();

            String preMonday = df.format(monday);

            return preMonday;

            }

            // 獲得下周星期日的日期

            public String getNextSunday() {

            int mondayPlus = this.getMondayPlus();

            GregorianCalendar currentDate = new GregorianCalendar();

            currentDate.add(GregorianCalendar.DATE, mondayPlus + 7+6);

            Date monday = currentDate.getTime();

            DateFormat df = DateFormat.getDateInstance();

            String preMonday = df.format(monday);

            return preMonday;

            }

           

           

           

            private int getMonthPlus(){

            Calendar cd = Calendar.getInstance();

            int monthOfNumber = cd.get(Calendar.DAY_OF_MONTH);

            cd.set(Calendar.DATE, 1);//把日期設置為當月第一天

            cd.roll(Calendar.DATE, -1);//日期回滾一天,也就是最后一天

            MaxDate=cd.get(Calendar.DATE);

            if(monthOfNumber == 1){

            return -MaxDate;

            }else{

            return 1-monthOfNumber;

            }

            }

            //獲得上月最后一天的日期

            public String getPreviousMonthEnd(){

            String str = "";

            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

            Calendar lastDate = Calendar.getInstance();

            lastDate.add(Calendar.MONTH,-1);//減一個月

            lastDate.set(Calendar.DATE, 1);//把日期設置為當月第一天

            lastDate.roll(Calendar.DATE, -1);//日期回滾一天,也就是本月最后一天

            str=sdf.format(lastDate.getTime());

            return str;

            }

            //獲得下個月第一天的日期

            public String getNextMonthFirst(){

            String str = "";

            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

            Calendar lastDate = Calendar.getInstance();

            lastDate.add(Calendar.MONTH,1);//減一個月

            lastDate.set(Calendar.DATE, 1);//把日期設置為當月第一天

            str=sdf.format(lastDate.getTime());

            return str;

            }

            //獲得下個月最后一天的日期

            public String getNextMonthEnd(){

            String str = "";

            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

            Calendar lastDate = Calendar.getInstance();

            lastDate.add(Calendar.MONTH,1);//加一個月

            lastDate.set(Calendar.DATE, 1);//把日期設置為當月第一天

            lastDate.roll(Calendar.DATE, -1);//日期回滾一天,也就是本月最后一天

            str=sdf.format(lastDate.getTime());

            return str;

            }

            //獲得明年最后一天的日期

            public String getNextYearEnd(){

            String str = "";

            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

            Calendar lastDate = Calendar.getInstance();

            lastDate.add(Calendar.YEAR,1);//加一個年

            lastDate.set(Calendar.DAY_OF_YEAR, 1);

            lastDate.roll(Calendar.DAY_OF_YEAR, -1);

            str=sdf.format(lastDate.getTime());

            return str;

            }

            //獲得明年第一天的日期

            public String getNextYearFirst(){

            String str = "";

            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

            Calendar lastDate = Calendar.getInstance();

            lastDate.add(Calendar.YEAR,1);//加一個年

            lastDate.set(Calendar.DAY_OF_YEAR, 1);

            str=sdf.format(lastDate.getTime());

            return str;

            }

            //獲得本年有多少天

            private int getMaxYear(){

            Calendar cd = Calendar.getInstance();

            cd.set(Calendar.DAY_OF_YEAR,1);//把日期設為當年第一天

            cd.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滾一天。

            int MaxYear = cd.get(Calendar.DAY_OF_YEAR);

            return MaxYear;

            }

            private int getYearPlus(){

            Calendar cd = Calendar.getInstance();

            int yearOfNumber = cd.get(Calendar.DAY_OF_YEAR);//獲得當天是一年中的第幾天

            cd.set(Calendar.DAY_OF_YEAR,1);//把日期設為當年第一天

            cd.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滾一天。

            int MaxYear = cd.get(Calendar.DAY_OF_YEAR);

            if(yearOfNumber == 1){

            return -MaxYear;

            }else{

            return 1-yearOfNumber;

            }

            }

            //獲得本年第一天的日期

            public String getCurrentYearFirst(){

            int yearPlus = this.getYearPlus();

            GregorianCalendar currentDate = new GregorianCalendar();

            currentDate.add(GregorianCalendar.DATE,yearPlus);

            Date yearDay = currentDate.getTime();

            DateFormat df = DateFormat.getDateInstance();

            String preYearDay = df.format(yearDay);

            return preYearDay;

            }

           

           

           

            //獲得本年最后一天的日期 *

            public String getCurrentYearEnd(){

            Date date = new Date();

            SimpleDateFormat   dateFormat   =   new   SimpleDateFormat("yyyy");//可以方便地修改日期格式

            String  years  = dateFormat.format(date);

            return years+"-12-31";

            }

            //獲得上年第一天的日期 *

            public String getPreviousYearFirst(){

            Date date = new Date();

            SimpleDateFormat   dateFormat   =   new   SimpleDateFormat("yyyy");//可以方便地修改日期格式

            String  years  = dateFormat.format(date); int years_value = Integer.parseInt(years);

            years_value--;

            return years_value+"-1-1";

            }

            //獲得上年最后一天的日期

            public String getPreviousYearEnd(){

            weeks--;

            int yearPlus = this.getYearPlus();

            GregorianCalendar currentDate = new GregorianCalendar();

            currentDate.add(GregorianCalendar.DATE,yearPlus+MaxYear*weeks+(MaxYear-1));

            Date yearDay = currentDate.getTime();

            DateFormat df = DateFormat.getDateInstance();

            String preYearDay = df.format(yearDay);

            getThisSeasonTime(11);

            return preYearDay;

            }

            //獲得本季度

            public String getThisSeasonTime(int month){

            int array[][] = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};

            int season = 1;

            if(month>=1&&month<=3){

            season = 1;

            }

            if(month>=4&&month<=6){

            season = 2;

            }

            if(month>=7&&month<=9){

            season = 3;

            }

            if(month>=10&&month<=12){

            season = 4;

            }

            int start_month = array[season-1][0];

            int end_month = array[season-1][2];

            Date date = new Date();

            SimpleDateFormat   dateFormat   =   new   SimpleDateFormat("yyyy");//可以方便地修改日期格式

            String  years  = dateFormat.format(date);

            int years_value = Integer.parseInt(years);

            int start_days =1;//years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month);

            int end_days = getLastDayOfMonth(years_value,end_month);

            String seasonDate = years_value+"-"+start_month+"-"+start_days+";"+years_value+"-"+end_month+"-"+end_days;

            return seasonDate;

            }

            private int getLastDayOfMonth(int year, int month) {

            if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8

            || month == 10 || month == 12) {

            return 31;

            }

            if (month == 4 || month == 6 || month == 9 || month == 11) {

            return 30;

            }

            if (month == 2) {

            if (isLeapYear(year)) {

            return 29;

            } else {

            return 28;

            }

            }

            return 0;

            }

            public boolean isLeapYear(int year) {

            return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);

            }

            }

          posted @ 2012-03-30 13:19 yuhaibo736 閱讀(256) | 評論 (0)編輯 收藏

          僅列出標題
          共5頁: 上一頁 1 2 3 4 5 下一頁 
          主站蜘蛛池模板: 卢湾区| 益阳市| 汉阴县| 沿河| 西安市| 辰溪县| 洛南县| 南京市| 云浮市| 涿州市| 平利县| 汶川县| 邢台市| 吴忠市| 泾阳县| 沙田区| 贵定县| 宁乡县| 田阳县| 永嘉县| 洪洞县| 两当县| 小金县| 宿松县| 麻阳| 封开县| 浦东新区| 太保市| 阿城市| 星座| 舒城县| 青龙| 福清市| 辛集市| 丰都县| 兴仁县| 喜德县| 庄浪县| 比如县| 特克斯县| 克拉玛依市|