java获取时间方法是_Java获取各种常用时间方法

转自:http://www.cnblogs.com/LuckCoffey/articles/1855820.html

Java获取各种常用时间方法

Posted on 2010-10-19 20:31 LuckCOffey 阅读(3540) 评论(0)  编辑 收藏

1.package com.hefeng.test;

2.

3.

4.import java.text.DateFormat;

5.import java.text.ParsePosition;

6.import java.text.SimpleDateFormat;

7.import java.util.Calendar;

8.import java.util.Date;

9.import java.util.GregorianCalendar;

10.

11.public class TimeTest {

12.    //用来全局控制 上一周,本周,下一周的周数变化

13.    private  int weeks = 0;

14.    private int MaxDate;//一月最大天数

15.    private int MaxYear;//一年最大天数

16.

17.

18.    /**

19.     * @param args

20.     */

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

22.        TimeTest tt = new TimeTest();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

44.        System.out.println("获取两个日期之间间隔天数2008-12-1~2008-9.29:"+TimeTest.getTwoDay("2008-12-1","2008-9-29"));

45.    }

46.

47.

48.    /**

49.        * 得到二个日期间的间隔天数

50.        */

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

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

53.        long day = 0;

54.        try {

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

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

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

58.        } catch (Exception e) {

59.         return "";

60.        }

61.        return day + "";

62.    }

63.

64.

65.    /**

66.        * 根据一个日期,返回是星期几的字符串

67.        *

68.        * @param sdate

69.        * @return

70.        */

71.    public static String getWeek(String sdate) {

72.        // 再转换为时间

73.        Date date = TimeTest.strToDate(sdate);

74.        Calendar c = Calendar.getInstance();

75.        c.setTime(date);

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

77.        // hour中存的就是星期几了,其范围 1~7

78.        // 1=星期日 7=星期六,其他类推

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

80.    }

81.

82.    /**

83.        * 将短时间格式字符串转换为时间 yyyy-MM-dd

84.        *

85.        * @param strDate

86.        * @return

87.        */

88.    public static Date strToDate(String strDate) {

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

90.        ParsePosition pos = new ParsePosition(0);

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

92.        return strtodate;

93.    }

94.

95.    /**

96.        * 两个时间之间的天数

97.        *

98.        * @param date1

99.        * @param date2

100.        * @return

101.        */

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

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

104.         return 0;

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

106.         return 0;

107.        // 转换为标准时间

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

109.        java.util.Date date = null;

110.        java.util.Date mydate = null;

111.        try {

112.         date = myFormatter.parse(date1);

113.         mydate = myFormatter.parse(date2);

114.        } catch (Exception e) {

115.        }

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

117.        return day;

118.    }

119.

120.

121.

122.

123.    // 计算当月最后一天,返回字符串

124.    public String getDefaultDay(){

125.       String str = "";

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

127.

128.       Calendar lastDate = Calendar.getInstance();

129.       lastDate.set(Calendar.DATE,1);//设为当前月的1号

130.       lastDate.add(Calendar.MONTH,1);//加一个月,变为下月的1号

131.       lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天

132.

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

134.       return str;

135.    }

136.

137.    // 上月第一天

138.    public String getPreviousMonthFirst(){

139.       String str = "";

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

141.

142.       Calendar lastDate = Calendar.getInstance();

143.       lastDate.set(Calendar.DATE,1);//设为当前月的1号

144.       lastDate.add(Calendar.MONTH,-1);//减一个月,变为下月的1号

145.       //lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天

146.

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

148.       return str;

149.    }

150.

151.    //获取当月第一天

152.    public String getFirstDayOfMonth(){

153.       String str = "";

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

155.

156.       Calendar lastDate = Calendar.getInstance();

157.       lastDate.set(Calendar.DATE,1);//设为当前月的1号

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

159.       return str;

160.    }

161.

162.    // 获得本周星期日的日期

163.    public String getCurrentWeekday() {

164.        weeks = 0;

165.        int mondayPlus = this.getMondayPlus();

166.        GregorianCalendar currentDate = new GregorianCalendar();

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

168.        Date monday = currentDate.getTime();

169.

170.        DateFormat df = DateFormat.getDateInstance();

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

172.        return preMonday;

173.    }

174.

175.

176.    //获取当天时间

177.    public String getNowTime(String dateformat){

178.        Date   now   =   new   Date();

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

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

181.        return hehe;

182.    }

183.

184.    // 获得当前日期与本周日相差的天数

185.    private int getMondayPlus() {

186.        Calendar cd = Calendar.getInstance();

187.        // 获得今天是一周的第几天,星期日是第一天,星期二是第二天......

188.        int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK)-1;         //因为按中国礼拜一作为第一天所以这里减1

189.        if (dayOfWeek == 1) {

190.            return 0;

191.        } else {

192.            return 1 - dayOfWeek;

193.        }

194.    }

195.

196.    //获得本周一的日期

197.    public String getMondayOFWeek(){

198.         weeks = 0;

199.         int mondayPlus = this.getMondayPlus();

200.         GregorianCalendar currentDate = new GregorianCalendar();

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

202.         Date monday = currentDate.getTime();

203.

204.         DateFormat df = DateFormat.getDateInstance();

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

206.         return preMonday;

207.    }

208.

209.  //获得相应周的周六的日期

210.    public String getSaturday() {

211.        int mondayPlus = this.getMondayPlus();

212.        GregorianCalendar currentDate = new GregorianCalendar();

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

214.        Date monday = currentDate.getTime();

215.        DateFormat df = DateFormat.getDateInstance();

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

217.        return preMonday;

218.    }

219.

220. // 获得上周星期日的日期

221.    public String getPreviousWeekSunday() {

222.        weeks=0;

223.        weeks--;

224.        int mondayPlus = this.getMondayPlus();

225.        GregorianCalendar currentDate = new GregorianCalendar();

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

227.        Date monday = currentDate.getTime();

228.        DateFormat df = DateFormat.getDateInstance();

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

230.        return preMonday;

231.    }

232.

233. // 获得上周星期一的日期

234.    public String getPreviousWeekday() {

235.        weeks--;

236.        int mondayPlus = this.getMondayPlus();

237.        GregorianCalendar currentDate = new GregorianCalendar();

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

239.        Date monday = currentDate.getTime();

240.        DateFormat df = DateFormat.getDateInstance();

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

242.        return preMonday;

243.    }

244.

245.    // 获得下周星期一的日期

246.    public String getNextMonday() {

247.        weeks++;

248.        int mondayPlus = this.getMondayPlus();

249.        GregorianCalendar currentDate = new GregorianCalendar();

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

251.        Date monday = currentDate.getTime();

252.        DateFormat df = DateFormat.getDateInstance();

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

254.        return preMonday;

255.    }

256.

257. // 获得下周星期日的日期

258.    public String getNextSunday() {

259.

260.        int mondayPlus = this.getMondayPlus();

261.        GregorianCalendar currentDate = new GregorianCalendar();

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

263.        Date monday = currentDate.getTime();

264.        DateFormat df = DateFormat.getDateInstance();

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

266.        return preMonday;

267.    }

268.

269.

270.

271.    private int getMonthPlus(){

272.        Calendar cd = Calendar.getInstance();

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

274.        cd.set(Calendar.DATE, 1);//把日期设置为当月第一天

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

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

277.        if(monthOfNumber == 1){

278.            return -MaxDate;

279.        }else{

280.            return 1-monthOfNumber;

281.        }

282.    }

283.

284.  //获得上月最后一天的日期

285.    public String getPreviousMonthEnd(){

286.        String str = "";

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

288.

289.       Calendar lastDate = Calendar.getInstance();

290.      lastDate.add(Calendar.MONTH,-1);//减一个月

291.      lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天

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

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

294.       return str;

295.    }

296.

297.  //获得下个月第一天的日期

298.    public String getNextMonthFirst(){

299.        String str = "";

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

301.

302.       Calendar lastDate = Calendar.getInstance();

303.      lastDate.add(Calendar.MONTH,1);//减一个月

304.      lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天

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

306.       return str;

307.    }

308.

309.  //获得下个月最后一天的日期

310.    public String getNextMonthEnd(){

311.        String str = "";

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

313.

314.       Calendar lastDate = Calendar.getInstance();

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

316.      lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天

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

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

319.       return str;

320.    }

321.

322.    //获得明年最后一天的日期

323.    public String getNextYearEnd(){

324.        String str = "";

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

326.

327.      Calendar lastDate = Calendar.getInstance();

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

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

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

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

332.       return str;

333.    }

334.

335.  //获得明年第一天的日期

336.    public String getNextYearFirst(){

337.        String str = "";

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

339.

340.      Calendar lastDate = Calendar.getInstance();

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

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

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

344.      return str;

345.

346.    }

347.

348.  //获得本年有多少天

349.    private int getMaxYear(){

350.        Calendar cd = Calendar.getInstance();

351.        cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第一天

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

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

354.        return MaxYear;

355.    }

356.

357.    private int getYearPlus(){

358.        Calendar cd = Calendar.getInstance();

359.        int yearOfNumber = cd.get(Calendar.DAY_OF_YEAR);//获得当天是一年中的第几天

360.        cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第一天

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

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

363.        if(yearOfNumber == 1){

364.            return -MaxYear;

365.        }else{

366.            return 1-yearOfNumber;

367.        }

368.    }

369.  //获得本年第一天的日期

370.    public String getCurrentYearFirst(){

371.        int yearPlus = this.getYearPlus();

372.        GregorianCalendar currentDate = new GregorianCalendar();

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

374.        Date yearDay = currentDate.getTime();

375.        DateFormat df = DateFormat.getDateInstance();

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

377.        return preYearDay;

378.    }

379.

380.

381.  //获得本年最后一天的日期 *

382.    public String getCurrentYearEnd(){

383.        Date date = new Date();

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

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

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

387.    }

388.

389.

390.  //获得上年第一天的日期 *

391.    public String getPreviousYearFirst(){

392.        Date date = new Date();

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

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

395.        years_value--;

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

397.    }

398.

399.  //获得上年最后一天的日期

400.    public String getPreviousYearEnd(){

401.        weeks--;

402.        int yearPlus = this.getYearPlus();

403.        GregorianCalendar currentDate = new GregorianCalendar();

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

405.        Date yearDay = currentDate.getTime();

406.        DateFormat df = DateFormat.getDateInstance();

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

408.        getThisSeasonTime(11);

409.        return preYearDay;

410.    }

411.

412.  //获得本季度

413.    public String getThisSeasonTime(int month){

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

415.        int season = 1;

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

417.            season = 1;

418.        }

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

420.            season = 2;

421.        }

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

423.            season = 3;

424.        }

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

426.            season = 4;

427.        }

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

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

430.

431.        Date date = new Date();

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

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

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

435.

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

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

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

439.        return seasonDate;

440.

441.    }

442.

443.    /**

444.     * 获取某年某月的最后一天

445.     * @param year 年

446.     * @param month 月

447.     * @return 最后一天

448.     */

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

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

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

452.               return 31;

453.         }

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

455.               return 30;

456.         }

457.         if (month == 2) {

458.               if (isLeapYear(year)) {

459.                   return 29;

460.               } else {

461.                   return 28;

462.               }

463.         }

464.         return 0;

465.   }

466.   /**

467.    * 是否闰年

468.    * @param year 年

469.    * @return

470.    */

471.  public boolean isLeapYear(int year) {

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

473.  }

474.}

l另外的一种方法

1./**

2.     * 获取系统时间

3.     * @return

4.     */

5.    public String getDate(){

6.

7.         Calendar ca = Calendar.getInstance();

8.          int year = ca.get(Calendar.YEAR);//获取年份

9.          int month=ca.get(Calendar.MONTH);//获取月份

10.          int day=ca.get(Calendar.DATE);//获取日

11.          int minute=ca.get(Calendar.MINUTE);//分

12.          int hour=ca.get(Calendar.HOUR);//小时

13.          int second=ca.get(Calendar.SECOND);//秒

14.

15.          String date = year + "年" + (month + 1 )+ "月" + day + "日"+ hour + "时" + minute + "分" + second + "秒";

16.

17.

18.          return date;

19.

20.    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值