java獲取時間

1.import java.text.DateFormat;  

2.import java.text.ParsePosition;  

3.import java.text.SimpleDateFormat;  

4.import java.util.Calendar;  

5.import java.util.Date;  

6.import java.util.GregorianCalendar;  

7. 

8.public class Test2 {  

9.    //用來全局控制上一週,本週,下一週的週數變化  

10.    private  int weeks = 0;  

11.    private int MaxDate;//一月最大天數  

12.    private int MaxYear;//一年最大天數  

13.      

14.      

15.    /** 

16.     * @param args 

17.     */ 

18.    public static void main(String[] args) {  

19.        Test2 tt = new Test2();  

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

42.    }  

43.      

44.      

45.    /** 

46.        * 得到二個日期間的間隔天數 

47.        */ 

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

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

50.        long day = 0;  

51.        try {  

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

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

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

55.        } catch (Exception e) {  

56.         return "";  

57.        }  

58.        return day + "";  

59.    }  

60. 

61. 

62.    /** 

63.        * 根據一個日期,返回是星期幾的字符串 

64.        *  

65.        * @param sdate 

66.        * @return 

67.        */ 

68.    public static String getWeek(String sdate) {  

69.        // 再轉換爲時間  

70.        Date date = Test2.strToDate(sdate);  

71.        Calendar c = Calendar.getInstance();  

72.        c.setTime(date);  

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

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

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

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

77.    }  

78. 

79.    /** 

80.        * 將短時間格式字符串轉換爲時間 yyyy-MM-dd  

81.        *  

82.        * @param strDate 

83.        * @return 

84.        */ 

85.    public static Date strToDate(String strDate) {  

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

87.        ParsePosition pos = new ParsePosition(0);  

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

89.        return strtodate;  

90.    }  

91. 

92.    /** 

93.        * 兩個時間之間的天數 

94.        *  

95.        * @param date1 

96.        * @param date2 

97.        * @return 

98.        */ 

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

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

101.         return 0;  

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

103.         return 0;  

104.        // 轉換爲標準時間  

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

106.        java.util.Date date = null;  

107.        java.util.Date mydate = null;  

108.        try {  

109.         date = myFormatter.parse(date1);  

110.         mydate = myFormatter.parse(date2);  

111.        } catch (Exception e) {  

112.        }  

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

114.        return day;  

115.    }  

116. 

117. 

118. 

119.      

120.    // 計算當月最後一天,返回字符串  

121.    public String getDefaultDay(){    

122.       String str = "";  

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

124. 

125.       Calendar lastDate = Calendar.getInstance();  

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

127.       lastDate.add(Calendar.MONTH,1);//加一個月,變爲下月的1  

128.       lastDate.add(Calendar.DATE,-1);//減去一天,變爲當月最後一天  

129.         

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

131.       return str;    

132.    }  

133.      

134.    // 上月第一天  

135.    public String getPreviousMonthFirst(){    

136.       String str = "";  

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

138. 

139.       Calendar lastDate = Calendar.getInstance();  

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

141.       lastDate.add(Calendar.MONTH,-1);//減一個月,變爲下月的1  

142.       //lastDate.add(Calendar.DATE,-1);//減去一天,變爲當月最後一天  

143.         

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

145.       return str;    

146.    }  

147.      

148.    //獲取當月第一天  

149.    public String getFirstDayOfMonth(){    

150.       String str = "";  

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

152. 

153.       Calendar lastDate = Calendar.getInstance();  

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

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

156.       return str;    

157.    }  

158.      

159.    // 獲得本週星期日的日期    

160.    public String getCurrentWeekday() {  

161.        weeks = 0;  

162.        int mondayPlus = this.getMondayPlus();  

163.        GregorianCalendar currentDate = new GregorianCalendar();  

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

165.        Date monday = currentDate.getTime();  

166.          

167.        DateFormat df = DateFormat.getDateInstance();  

168.        String preMonday = df.format(monday);  

169.        return preMonday;  

170.    }  

171.      

172.      

173.    //獲取當天時間   

174.    public String getNowTime(String dateformat){  

175.        Date   now   =   new   Date();     

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

177.        String  hehe  = dateFormat.format(now);     

178.        return hehe;  

179.    }  

180.      

181.    // 獲得當前日期與本週日相差的天數  

182.    private int getMondayPlus() {  

183.        Calendar cd = Calendar.getInstance();  

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

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

186.        if (dayOfWeek == 1) {  

187.            return 0;  

188.        } else {  

189.            return 1 - dayOfWeek;  

190.        }  

191.    }  

192.      

193.    //獲得本週一的日期  

194.    public String getMondayOFWeek(){  

195.         weeks = 0;  

196.         int mondayPlus = this.getMondayPlus();  

197.         GregorianCalendar currentDate = new GregorianCalendar();  

198.         currentDate.add(GregorianCalendar.DATE, mondayPlus);  

199.         Date monday = currentDate.getTime();  

200.           

201.         DateFormat df = DateFormat.getDateInstance();  

202.         String preMonday = df.format(monday);  

203.         return preMonday;  

204.    }  

205.      

206.  //獲得相應周的週六的日期  

207.    public String getSaturday() {  

208.        int mondayPlus = this.getMondayPlus();  

209.        GregorianCalendar currentDate = new GregorianCalendar();  

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

211.        Date monday = currentDate.getTime();  

212.        DateFormat df = DateFormat.getDateInstance();  

213.        String preMonday = df.format(monday);  

214.        return preMonday;  

215.    }  

216.      

217. // 獲得上週星期日的日期  

218.    public String getPreviousWeekSunday() {  

219.        weeks=0;  

220.        weeks--;  

221.        int mondayPlus = this.getMondayPlus();  

222.        GregorianCalendar currentDate = new GregorianCalendar();  

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

224.        Date monday = currentDate.getTime();  

225.        DateFormat df = DateFormat.getDateInstance();  

226.        String preMonday = df.format(monday);  

227.        return preMonday;  

228.    }  

229. 

230. // 獲得上週星期一的日期  

231.    public String getPreviousWeekday() {  

232.        weeks--;  

233.        int mondayPlus = this.getMondayPlus();  

234.        GregorianCalendar currentDate = new GregorianCalendar();  

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

236.        Date monday = currentDate.getTime();  

237.        DateFormat df = DateFormat.getDateInstance();  

238.        String preMonday = df.format(monday);  

239.        return preMonday;  

240.    }  

241.      

242.    // 獲得下週星期一的日期  

243.    public String getNextMonday() {  

244.        weeks++;  

245.        int mondayPlus = this.getMondayPlus();  

246.        GregorianCalendar currentDate = new GregorianCalendar();  

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

248.        Date monday = currentDate.getTime();  

249.        DateFormat df = DateFormat.getDateInstance();  

250.        String preMonday = df.format(monday);  

251.        return preMonday;  

252.    }  

253.      

254. // 獲得下週星期日的日期  

255.    public String getNextSunday() {  

256.          

257.        int mondayPlus = this.getMondayPlus();  

258.        GregorianCalendar currentDate = new GregorianCalendar();  

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

260.        Date monday = currentDate.getTime();  

261.        DateFormat df = DateFormat.getDateInstance();  

262.        String preMonday = df.format(monday);  

263.        return preMonday;  

264.    }  

265.      

266.      

267.      

268.    private int getMonthPlus(){  

269.        Calendar cd = Calendar.getInstance();  

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

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

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

273.        MaxDate=cd.get(Calendar.DATE);   

274.        if(monthOfNumber == 1){  

275.            return -MaxDate;  

276.        }else{  

277.            return 1-monthOfNumber;  

278.        }  

279.    }  

280.      

281.  //獲得上月最後一天的日期  

282.    public String getPreviousMonthEnd(){  

283.        String str = "";  

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

285. 

286.       Calendar lastDate = Calendar.getInstance();  

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

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

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

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

291.       return str;    

292.    }  

293.      

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

295.    public String getNextMonthFirst(){  

296.        String str = "";  

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

298. 

299.       Calendar lastDate = Calendar.getInstance();  

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

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

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

303.       return str;    

304.    }  

305.      

306.  //獲得下個月最後一天的日期  

307.    public String getNextMonthEnd(){  

308.        String str = "";  

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

310. 

311.       Calendar lastDate = Calendar.getInstance();  

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

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

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

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

316.       return str;    

317.    }  

318.      

319.    //獲得明年最後一天的日期  

320.    public String getNextYearEnd(){  

321.        String str = "";  

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

323. 

324.      Calendar lastDate = Calendar.getInstance();  

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

326.      lastDate.set(Calendar.DAY_OF_YEAR, 1);  

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

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

329.       return str;    

330.    }  

331.      

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

333.    public String getNextYearFirst(){  

334.        String str = "";  

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

336. 

337.      Calendar lastDate = Calendar.getInstance();  

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

339.      lastDate.set(Calendar.DAY_OF_YEAR, 1);  

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

341.      return str;    

342.          

343.    }  

344.      

345.  //獲得本年有多少天  

346.    private int getMaxYear(){  

347.        Calendar cd = Calendar.getInstance();  

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

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

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

351.        return MaxYear;  

352.    }  

353.      

354.    private int getYearPlus(){  

355.        Calendar cd = Calendar.getInstance();  

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

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

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

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

360.        if(yearOfNumber == 1){  

361.            return -MaxYear;  

362.        }else{  

363.            return 1-yearOfNumber;  

364.        }  

365.    }  

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

367.    public String getCurrentYearFirst(){  

368.        int yearPlus = this.getYearPlus();  

369.        GregorianCalendar currentDate = new GregorianCalendar();  

370.        currentDate.add(GregorianCalendar.DATE,yearPlus);  

371.        Date yearDay = currentDate.getTime();  

372.        DateFormat df = DateFormat.getDateInstance();  

373.        String preYearDay = df.format(yearDay);  

374.        return preYearDay;  

375.    }  

376.      

377.      

378.  //獲得本年最後一天的日期 *  

379.    public String getCurrentYearEnd(){  

380.        Date date = new Date();  

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

382.        String  years  = dateFormat.format(date);     

383.        return years+"-12-31";  

384.    }  

385.      

386.      

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

388.    public String getPreviousYearFirst(){  

389.        Date date = new Date();  

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

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

392.        years_value--;  

393.        return years_value+"-1-1";  

394.    }  

395.      

396.  //獲得上年最後一天的日期  

397.    public String getPreviousYearEnd(){  

398.        weeks--;  

399.        int yearPlus = this.getYearPlus();  

400.        GregorianCalendar currentDate = new GregorianCalendar();  

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

402.        Date yearDay = currentDate.getTime();  

403.        DateFormat df = DateFormat.getDateInstance();  

404.        String preYearDay = df.format(yearDay);  

405.        getThisSeasonTime(11);  

406.        return preYearDay;  

407.    }  

408.      

409.  //獲得本季度  

410.    public String getThisSeasonTime(int month){  

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

412.        int season = 1;  

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

414.            season = 1;  

415.        }  

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

417.            season = 2;  

418.        }  

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

420.            season = 3;  

421.        }  

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

423.            season = 4;  

424.        }  

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

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

427.          

428.        Date date = new Date();  

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

430.        String  years  = dateFormat.format(date);     

431.        int years_value = Integer.parseInt(years);  

432.          

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

434.        int end_days = getLastDayOfMonth(years_value,end_month);  

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

436.        return seasonDate;  

437.          

438.    }  

439.      

440.    /** 

441.     * 獲取某年某月的最後一天 

442.     * @param year  

443.     * @param month  

444.     * @return 最後一天 

445.     */ 

446.   private int getLastDayOfMonth(int year, int month) {  

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

448.                   || month == 10 || month == 12) {  

449.               return 31;  

450.         }   

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

452.               return 30;  

453.         }  

454.         if (month == 2) {  

455.               if (isLeapYear(year)) {  

456.                   return 29;  

457.               } else {  

458.                   return 28;  

459.               }  

460.         }  

461.         return 0;  

462.   }  

463.   /** 

464.    * 是否閏年 

465.    * @param year  

466.    * @return  

467.    */ 

468.  public boolean isLeapYear(int year) {  

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

470.  }  

471.} 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章