java date.getdate_java中获取日期和时间的方法总结

1 packagecom.hefeng.test;2 importjava.text.DateFormat;3 importjava.text.ParsePosition;4 importjava.text.SimpleDateFormat;5 importjava.util.Calendar;6 importjava.util.Date;7 importjava.util.GregorianCalendar;8 public classTimeTest {9 //用来全局控制 上一周,本周,下一周的周数变化

10 private int weeks = 0;11 private int MaxDate;//一月最大天数

12 private int MaxYear;//一年最大天数

13 /**

14 *@paramargs15 */

16 public static voidmain(String[] args) {17 TimeTest tt = newTimeTest();18 System.out.println("得到6个月后的日期:"+tt .getAfterMonth(6);19 System.out.println("获取当天日期:"+tt.getNowTime("yyyy-MM-dd"));20 System.out.println("获取本周一日期:"+tt.getMondayOFWeek());21 System.out.println("获取本周日的日期~:"+tt.getCurrentWeekday());22 System.out.println("获取上周一日期:"+tt.getPreviousWeekday());23 System.out.println("获取上周日日期:"+tt.getPreviousWeekSunday());24 System.out.println("获取下周一日期:"+tt.getNextMonday());25 System.out.println("获取下周日日期:"+tt.getNextSunday());26 System.out.println("获得相应周的周六:"+tt.getNowTime("yyyy-MM-dd"));27 System.out.println("获取本月第一天日期:"+tt.getFirstDayOfMonth());28 System.out.println("获取本月最后一天日期:"+tt.getDefaultDay());29 System.out.println("获取上月第一天日期:"+tt.getPreviousMonthFirst());30 System.out.println("获取上月最后一天的日期:"+tt.getPreviousMonthEnd());31 System.out.println("获取下月第一天日期:"+tt.getNextMonthFirst());32 System.out.println("获取下月最后一天日期:"+tt.getNextMonthEnd());33 System.out.println("获取本年的第一天日期:"+tt.getCurrentYearFirst());34 System.out.println("获取本年最后一天日期:"+tt.getCurrentYearEnd());35 System.out.println("获取去年的第一天日期:"+tt.getPreviousYearFirst());36 System.out.println("获取去年的最后一天日期:"+tt.getPreviousYearEnd());37 System.out.println("获取明年第一天日期:"+tt.getNextYearFirst());38 System.out.println("获取明年最后一天日期:"+tt.getNextYearEnd());39 System.out.println("获取本季度第一天到最后一天:"+tt.getThisSeasonTime(11));40 System.out.println("获取两个日期之间间隔天数2008-12-1~2008-

41 .29:"+TimeTest.getTwoDay("2008-12-1","2008-9-29"));

42 }43 /**

44 * 得到指定月后(前)的日期 参数传负数即可45 */

46 public static String getAfterMonth(intmonth) {47 Calendar c = Calendar.getInstance();//获得一个日历的实例

48 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");49 Date date = null;50 try{51 date = sdf.parse("2009-11-04");//初始日期

52 }catch(Exception e){53 }54 c.setTime(date);//设置日历时间

55 c.add(Calendar.MONTH,month);//在日历的月份上增加6个月

56 String strDate = sdf.format(c.getTime()));//的到你想要得6个月后的日期

57 returnstrDate;58 }59 /**

60 * 得到二个日期间的间隔天数61 */

62 public staticString getTwoDay(String sj1, String sj2) {63 SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");64 long day = 0;65 try{66 java.util.Date date =myFormatter.parse(sj1);67 java.util.Date mydate =myFormatter.parse(sj2);68 day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);69 } catch(Exception e) {70 return "";71 }72 return day + "";73 }74 /**

75 * 根据一个日期,返回是星期几的字符串76 */

77 public staticString getWeek(String sdate) {78 //再转换为时间

79 Date date =TimeTest.strToDate(sdate);80 Calendar c =Calendar.getInstance();81 c.setTime(date);82 //int hour=c.get(Calendar.DAY_OF_WEEK);83 //hour 中存的就是星期几了,其范围 1~784 //1=星期日 7=星期六,其他类推

85 return new SimpleDateFormat("EEEE").format(c.getTime());86 }87 /**

88 * 将短时间格式字符串转换为时间 yyyy-MM-dd89 */

90 public staticDate strToDate(String strDate) {91 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");92 ParsePosition pos = new ParsePosition(0);93 Date strtodate =formatter.parse(strDate, pos);94 returnstrtodate;95 }96 /**

97 * 两个时间之间的天数98 *99 *@paramdate1100 *@paramdate2101 *@return

102 */

103 public static longgetDays(String date1, String date2) {104 if (date1 == null || date1.equals(""))105 return 0;106 if (date2 == null || date2.equals(""))107 return 0;108 //转换为标准时间

109 SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");110 java.util.Date date = null;111 java.util.Date mydate = null;112 try{113 date =myFormatter.parse(date1);114 mydate =myFormatter.parse(date2);115 } catch(Exception e) {116 }117 long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);118 returnday;119 }120 //计算当月最后一天,返回字符串

121 publicString getDefaultDay(){122 String str = "";123 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");124 Calendar lastDate =Calendar.getInstance();125 lastDate.set(Calendar.DATE,1);//设为当前月的1 号

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

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

128 str=sdf.format(lastDate.getTime());129 returnstr;130 }131 //上月第一天

132 publicString getPreviousMonthFirst(){133 String str = "";134 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");135 Calendar lastDate =Calendar.getInstance();136 lastDate.set(Calendar.DATE,1);//设为当前月的1 号

137 lastDate.add(Calendar.MONTH,-1);//减一个月,变为下月的1 号138 //lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天

139 str=sdf.format(lastDate.getTime());140 returnstr;141 }142 //获取当月第一天

143 publicString getFirstDayOfMonth(){144 String str = "";145 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");146 Calendar lastDate =Calendar.getInstance();147 lastDate.set(Calendar.DATE,1);//设为当前月的1 号

148 str=sdf.format(lastDate.getTime());149 returnstr;150 }151 //获得本周星期日的日期

152 publicString getCurrentWeekday() {153 weeks = 0;154 int mondayPlus = this.getMondayPlus();155 GregorianCalendar currentDate = newGregorianCalendar();156 currentDate.add(GregorianCalendar.DATE, mondayPlus+6);157 Date monday =currentDate.getTime();158 DateFormat df =DateFormat.getDateInstance();159 String preMonday =df.format(monday);160 returnpreMonday;161 }162 //获取当天时间

163 publicString getNowTime(String dateformat){164 Date now = newDate();165 SimpleDateFormat dateFormat = new SimpleDateFormat(dateformat);//可

166 以方便167 地修改日期格式168 String hehe =dateFormat.format(now);169 returnhehe;170 }171 //获得当前日期与本周日相差的天数

172 private intgetMondayPlus() {173 Calendar cd =Calendar.getInstance();174 //获得今天是一周的第几天,星期日是第一天,星期二是第二天......

175 int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK)-1; //因为按中国礼拜一

176 作为第一177 天所以这里减1178 if (dayOfWeek == 1) {179 return 0;180 } else{181 return 1 -dayOfWeek;182 }183 }184 //获得本周一的日期

185 publicString getMondayOFWeek(){186 weeks = 0;187 int mondayPlus = this.getMondayPlus();188 GregorianCalendar currentDate = newGregorianCalendar();189 currentDate.add(GregorianCalendar.DATE, mondayPlus);190 Date monday =currentDate.getTime();191 DateFormat df =DateFormat.getDateInstance();192 String preMonday =df.format(monday);193 returnpreMonday;194 }195 //获得相应周的周六的日期

196 publicString getSaturday() {197 int mondayPlus = this.getMondayPlus();198 GregorianCalendar currentDate = newGregorianCalendar();199 currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks + 6);200 Date monday =currentDate.getTime();201 DateFormat df =DateFormat.getDateInstance();202 String preMonday =df.format(monday);203 returnpreMonday;204 }205 //获得上周星期日的日期

206 publicString getPreviousWeekSunday() {207 weeks=0;208 weeks--;209 int mondayPlus = this.getMondayPlus();210 GregorianCalendar currentDate = newGregorianCalendar();211 currentDate.add(GregorianCalendar.DATE, mondayPlus+weeks);212 Date monday =currentDate.getTime();213 DateFormat df =DateFormat.getDateInstance();214 String preMonday =df.format(monday);215 returnpreMonday;216 }217 //获得上周星期一的日期

218 publicString getPreviousWeekday() {219 weeks--;220 int mondayPlus = this.getMondayPlus();221 GregorianCalendar currentDate = newGregorianCalendar();222 currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 *weeks);223 Date monday =currentDate.getTime();224 DateFormat df =DateFormat.getDateInstance();225 String preMonday =df.format(monday);226 returnpreMonday;227 }228 //获得下周星期一的日期

229 publicString getNextMonday() {230 weeks++;231 int mondayPlus = this.getMondayPlus();232 GregorianCalendar currentDate = newGregorianCalendar();233 currentDate.add(GregorianCalendar.DATE, mondayPlus + 7);234 Date monday =currentDate.getTime();235 DateFormat df =DateFormat.getDateInstance();236 String preMonday =df.format(monday);237 returnpreMonday;238 }239 //获得下周星期日的日期

240 publicString getNextSunday() {241 int mondayPlus = this.getMondayPlus();242 GregorianCalendar currentDate = newGregorianCalendar();243 currentDate.add(GregorianCalendar.DATE, mondayPlus + 7+6);244 Date monday =currentDate.getTime();245 DateFormat df =DateFormat.getDateInstance();246 String preMonday =df.format(monday);247 returnpreMonday;248 }249 private intgetMonthPlus(){250 Calendar cd =Calendar.getInstance();251 int monthOfNumber =cd.get(Calendar.DAY_OF_MONTH);252 cd.set(Calendar.DATE, 1);//把日期设置为当月第一天

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

254 MaxDate=cd.get(Calendar.DATE);255 if(monthOfNumber == 1){256 return -MaxDate;257 }else{258 return 1-monthOfNumber;259 }260 }261 //获得上月最后一天的日期

262 publicString getPreviousMonthEnd(){263 String str = "";264 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");265 Calendar lastDate =Calendar.getInstance();266 lastDate.add(Calendar.MONTH,-1);//减一个月

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

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

269 str=sdf.format(lastDate.getTime());270 returnstr;271 }272 //获得下个月第一天的日期

273 publicString getNextMonthFirst(){274 String str = "";275 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");276 Calendar lastDate =Calendar.getInstance();277 lastDate.add(Calendar.MONTH,1);//减一个月

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

279 str=sdf.format(lastDate.getTime());280 returnstr;281 }282 //获得下个月最后一天的日期

283 publicString getNextMonthEnd(){284 String str = "";285 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");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 returnstr;292 }293 //获得明年最后一天的日期

294 publicString getNextYearEnd(){295 String str = "";296 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");297 Calendar lastDate =Calendar.getInstance();298 lastDate.add(Calendar.YEAR,1);//加一个年

299 lastDate.set(Calendar.DAY_OF_YEAR, 1);300 lastDate.roll(Calendar.DAY_OF_YEAR, -1);301 str=sdf.format(lastDate.getTime());302 returnstr;303 }304 //获得明年第一天的日期

305 publicString getNextYearFirst(){306 String str = "";307 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");308 Calendar lastDate =Calendar.getInstance();309 lastDate.add(Calendar.YEAR,1);//加一个年

310 lastDate.set(Calendar.DAY_OF_YEAR, 1);311 str=sdf.format(lastDate.getTime());312 returnstr;313 }314 //获得本年有多少天

315 private intgetMaxYear(){316 Calendar cd =Calendar.getInstance();317 cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第一天

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

319 int MaxYear =cd.get(Calendar.DAY_OF_YEAR);320 returnMaxYear;321 }322 private intgetYearPlus(){323 Calendar cd =Calendar.getInstance();324 int yearOfNumber = cd.get(Calendar.DAY_OF_YEAR);//获得当天是一年中的第几天

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

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

327 int MaxYear =cd.get(Calendar.DAY_OF_YEAR);328 if(yearOfNumber == 1){329 return -MaxYear;330 }else{331 return 1-yearOfNumber;332 }333 }334 //获得本年第一天的日期

335 publicString getCurrentYearFirst(){336 int yearPlus = this.getYearPlus();337 GregorianCalendar currentDate = newGregorianCalendar();338 currentDate.add(GregorianCalendar.DATE,yearPlus);339 Date yearDay =currentDate.getTime();340 DateFormat df =DateFormat.getDateInstance();341 String preYearDay =df.format(yearDay);342 returnpreYearDay;343 }344 //获得本年最后一天的日期 *

345 publicString getCurrentYearEnd(){346 Date date = newDate();347 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");//可以方

348 便地修349 改日期格式350 String years =dateFormat.format(date);351 return years+"-12-31";352 }353 //获得上年第一天的日期 *

354 publicString getPreviousYearFirst(){355 Date date = newDate();356 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");//可以方

357 便地修358 改日期格式359 String years = dateFormat.format(date); int years_value =Integer.parseInt360 (years);361 years_value--;362 return years_value+"-1-1";363 }364 //获得上年最后一天的日期

365 publicString getPreviousYearEnd(){366 weeks--;367 int yearPlus = this.getYearPlus();368 GregorianCalendar currentDate = newGregorianCalendar();369 currentDate.add(GregorianCalendar.DATE,yearPlus+MaxYear*weeks+(MaxYear-1));370 Date yearDay =currentDate.getTime();371 DateFormat df =DateFormat.getDateInstance();372 String preYearDay =df.format(yearDay);373 getThisSeasonTime(11);374 returnpreYearDay;375 }376 //获得本季度

377 public String getThisSeasonTime(intmonth){378 int array[][] = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};379 int season = 1;380 if(month>=1&&month<=3){381 season = 1;382 }383 if(month>=4&&month<=6){384 season = 2;385 }386 if(month>=7&&month<=9){387 season = 3;388 }389 if(month>=10&&month<=12){390 season = 4;391 }392 int start_month = array[season-1][0];393 int end_month = array[season-1][2];394 Date date = newDate();395 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");//可以方便地修改日期格式

396

397 String years =dateFormat.format(date);398 int years_value =Integer.parseInt(years);399 int start_days =1;//years+"-"+String.valueOf(start_month)+"-

400 ";//getLastDayOfMonth(years_value,start_month);

401 int end_days =getLastDayOfMonth(years_value,end_month);402 String seasonDate =

403 years_value+"-"+start_month+"-"+start_days+";"+years_value+"-"+end_month+"-"+end_days;404 returnseasonDate;405 }406 /**

407 * 获取某年某月的最后一天408 *@paramyear 年409 *@parammonth 月410 *@return最后一天411 */

412 private int getLastDayOfMonth(int year, intmonth) {413 if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8

414 || month == 10 || month == 12) {415 return 31;416 }417 if (month == 4 || month == 6 || month == 9 || month == 11) {418 return 30;419 }420 if (month == 2) {421 if(isLeapYear(year)) {422 return 29;423 } else{424 return 28;425 }426 }427 return 0;428 }429 /**

430 * 是否闰年431 *@paramyear 年432 *@return

433 */

434 public boolean isLeapYear(intyear) {435 return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);436 }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值