-
-
Save 15d23/45cb9853d0f9510dd6b570e70b8a2528 to your computer and use it in GitHub Desktop.
日期工具类(日期,月份加减等)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.micro.zk.creditcardselector; | |
import android.annotation.SuppressLint; | |
import java.text.ParseException; | |
import java.text.SimpleDateFormat; | |
import java.util.Calendar; | |
import java.util.Date; | |
/*** | |
* 日期工具类 | |
* | |
* @author damao | |
* | |
*/ | |
public class TimeUtils { | |
/*** | |
* 日期月份减一个月 | |
* | |
* @param datetime | |
* 日期(2014-11) | |
* @return 2014-10 | |
*/ | |
public static String dateFormat(String datetime) { | |
@SuppressLint("SimpleDateFormat") SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); | |
Date date = null; | |
try { | |
date = sdf.parse(datetime); | |
} catch (ParseException e) { | |
e.printStackTrace(); | |
} | |
Calendar cl = Calendar.getInstance(); | |
cl.setTime(date); | |
cl.add(Calendar.MONTH, -1); | |
date = cl.getTime(); | |
return sdf.format(date); | |
} | |
public static String dateFormat(Date date) { | |
@SuppressLint("SimpleDateFormat") SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); | |
return sdf.format(date); | |
} | |
/**** | |
* 传入具体日期 ,返回具体日期减一个月。 | |
* | |
* @param date | |
* 日期(2014-04-20) | |
* @return 2014-03-20 | |
* @throws ParseException | |
*/ | |
public static String subMonth(String date) throws ParseException { | |
@SuppressLint("SimpleDateFormat") SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | |
Date dt = sdf.parse(date); | |
Calendar rightNow = Calendar.getInstance(); | |
rightNow.setTime(dt); | |
rightNow.add(Calendar.MONTH, -1); | |
Date dt1 = rightNow.getTime(); | |
String reStr = sdf.format(dt1); | |
return reStr; | |
} | |
public static Date addMonth(Date date) { | |
Calendar rightNow = Calendar.getInstance(); | |
rightNow.setTime(date); | |
rightNow.add(Calendar.MONTH, 1); | |
return rightNow.getTime(); | |
} | |
/**** | |
* 获取月末最后一天 | |
* | |
* @param sDate | |
* 2014-11-24 | |
* @return 30 | |
*/ | |
public static String getMonthMaxDay(String sDate) { | |
@SuppressLint("SimpleDateFormat") SimpleDateFormat sdf_full = new SimpleDateFormat("yyyy-MM-dd"); | |
Calendar cal = Calendar.getInstance(); | |
Date date = null; | |
try { | |
date = sdf_full.parse(sDate + "-01"); | |
} catch (ParseException e) { | |
e.printStackTrace(); | |
} | |
cal.setTime(date); | |
int last = cal.getActualMaximum(Calendar.DATE); | |
return String.valueOf(last); | |
} | |
public static int getMonthMaxDay(Date sDate) { | |
Calendar cal = Calendar.getInstance(); | |
Date date = sDate; | |
cal.setTime(date); | |
return cal.getActualMaximum(Calendar.DATE); | |
} | |
// 判断是否是月末 | |
public static boolean isMonthEnd(Date date) { | |
Calendar cal = Calendar.getInstance(); | |
cal.setTime(date); | |
if (cal.get(Calendar.DATE) == cal | |
.getActualMaximum(Calendar.DAY_OF_MONTH)) | |
return true; | |
else | |
return false; | |
} | |
/*** | |
* 日期减一天、加一天 | |
* | |
* @param option | |
* 传入类型 pro:日期减一天,next:日期加一天 | |
* @param _date | |
* 2014-11-24 | |
* @return 减一天:2014-11-23或(加一天:2014-11-25) | |
*/ | |
public static String checkOption(String option, String _date) { | |
@SuppressLint("SimpleDateFormat") SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | |
Calendar cl = Calendar.getInstance(); | |
Date date = null; | |
try { | |
date = (Date) sdf.parse(_date); | |
} catch (ParseException e) { | |
e.printStackTrace(); | |
} | |
cl.setTime(date); | |
if ("pre".equals(option)) { | |
// 时间减一天 | |
cl.add(Calendar.DAY_OF_MONTH, -1); | |
} else if ("next".equals(option)) { | |
// 时间加一天 | |
cl.add(Calendar.DAY_OF_YEAR, 1); | |
} else { | |
// do nothing | |
} | |
date = cl.getTime(); | |
return sdf.format(date); | |
} | |
/*** | |
* 判断日期是否为当前月, 是当前月返回当月最小日期和当月目前最大日期以及传入日期上月的最大日和最小日 | |
* 不是当前月返回传入月份的最大日和最小日以及传入日期上月的最大日和最小日 | |
* | |
* @param date | |
* 日期 例如:2014-11 | |
* @return String[] 开始日期,结束日期,上月开始日期,上月结束日期 | |
* @throws ParseException | |
*/ | |
public static String[] getNow_Pre_Date(String date) throws ParseException { | |
String[] str_date = new String[4]; | |
Date now = new Date(); | |
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); | |
SimpleDateFormat sdf_full = new SimpleDateFormat("yyyy-MM-dd"); | |
String stMonth = sdf.format(now); | |
String stdate = "";// 开始日期 | |
String endate = "";// 结束日期 | |
String preDate_start = "";// 上月开始日期 | |
String preDate_end = "";// 上月结束日期 | |
// 当前月 | |
if (date.equals(stMonth)) { | |
stdate = stMonth + "-01"; // 2014-11-01 | |
endate = sdf_full.format(now);// 2014-11-24 | |
preDate_start = subMonth(stdate);// 2014-10-01 | |
preDate_end = subMonth(endate);// 2014-10-24 | |
} else { | |
// 非当前月 | |
String monthMaxDay = getMonthMaxDay(date); | |
stdate = date + "-01";// 2014-10-01 | |
endate = date + "-" + monthMaxDay;// 2014-10-31 | |
preDate_start = subMonth(stdate);// 2014-09-01 | |
preDate_end = subMonth(endate);// 2014-09-30 | |
} | |
str_date[0] = stdate; | |
str_date[1] = endate; | |
str_date[2] = preDate_start; | |
str_date[3] = preDate_end; | |
return str_date; | |
} | |
public static void main(String[] args) throws ParseException { | |
/* | |
* String a =DateAndTimeUtil.dateFormat(new Date()); | |
* System.out.println(a); String b = | |
* DateAndTimeUtil.subMonth("2014-03-31"); System.out.println(b); | |
* SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); Date | |
* dt=sdf.parse("2014-03-31"); | |
* System.out.println(DateAndTimeUtil.isMonthEnd(dt)); | |
*/ | |
String str = null; | |
// str = DateAndTimeUtil.checkOption("next", "2014-11-30"); | |
// str = getMonthMaxDay("2014-11-24"); | |
// str = dateFormat("2014-11"); | |
str = getNow_Pre_Date("2014-10")[0]; | |
System.out.println(str); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment