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.} 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值