一个工具类,可以得到指定月份的天数,可以得到以前或以后多少天、周、月、年的日期等。
- import android.annotation.SuppressLint;
- import android.text.TextUtils;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Calendar;
- import java.util.Date;
- @SuppressLint("SimpleDateFormat")
- public class DateHelper {
- private static DateHelper util;
- public static DateHelper getInstance() {
- if (util == null) {
- util = new DateHelper();
- }
- return util;
- }
- private DateHelper() {
- super();
- }
- public SimpleDateFormat date_Formater_1 = new SimpleDateFormat(
- "yyyy-MM-dd HH:mm:ss");
- public SimpleDateFormat date_Formater_2 = new SimpleDateFormat("yyyy-MM-dd");
- public Date getDate(String dateStr) {
- Date date = new Date();
- if (TextUtils.isEmpty(dateStr)) {
- return date;
- }
- try {
- date = date_Formater_1.parse(dateStr);
- return date;
- } catch (ParseException e) {
- e.printStackTrace();
- }
- return date;
- }
- public String getDataString_1(Date date) {
- if (date == null) {
- date = new Date();
- }
- String str = date_Formater_1.format(date);
- return str;
- }
- public String getDataString_2(Date date) {
- if (date == null) {
- date = new Date();
- }
- String str = date_Formater_2.format(date);
- return str;
- }
- /**
- * 将日期变成常见中文格式
- *
- * @param date
- * @return
- */
- public String getRencentTime(String date) {
- Date time = getDate(date);
- if (time == null) {
- return "一个月前";
- }
- String ftime = "";
- Calendar cal = Calendar.getInstance();
- String curDate = date_Formater_2.format(cal.getTime());
- String paramDate = date_Formater_2.format(time);
- if (curDate.equals(paramDate)) {
- int hour = (int) ((cal.getTimeInMillis() - time.getTime()) / 3600000);
- if (hour == 0)
- ftime = Math.max(
- (cal.getTimeInMillis() - time.getTime()) / 60000, 1)
- + "分钟前";
- else
- ftime = hour + "小时前";
- return ftime;
- }
- long lt = time.getTime() / 86400000;
- long ct = cal.getTimeInMillis() / 86400000;
- int days = (int) (ct - lt);
- if (days == 0) {
- int hour = (int) ((cal.getTimeInMillis() - time.getTime()) / 3600000);
- if (hour == 0)
- ftime = Math.max(
- (cal.getTimeInMillis() - time.getTime()) / 60000, 1)
- + "分钟前";
- else
- ftime = hour + "小时前";
- } else if (days == 1) {
- ftime = "昨天";
- } else if (days == 2) {
- ftime = "前天";
- } else if (days > 2 && days <= 10) {
- ftime = days + "天前";
- } else if (days > 10) {
- ftime = "一个月前";
- } else {
- ftime = date_Formater_2.format(time);
- }
- return ftime;
- }
- /**
- * 日期时间格式转换
- *
- * @param typeFrom
- * 原格式
- * @param typeTo
- * 转为格式
- * @param value
- * 传入的要转换的参数
- * @return
- */
- public String stringDateToStringData(String typeFrom, String typeTo,
- String value) {
- String re = value;
- SimpleDateFormat sdfFrom = new SimpleDateFormat(typeFrom);
- SimpleDateFormat sdfTo = new SimpleDateFormat(typeTo);
- try {
- re = sdfTo.format(sdfFrom.parse(re));
- } catch (ParseException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return re;
- }
- /**
- * 得到这个月有多少天
- *
- * @param year
- * @param month
- * @return
- */
- public int getMonthLastDay(int year, int month) {
- if (month == 0) {
- return 0;
- }
- Calendar a = Calendar.getInstance();
- a.set(Calendar.YEAR, year);
- a.set(Calendar.MONTH, month - 1);
- a.set(Calendar.DATE, 1);// 把日期设置为当月第一天
- a.roll(Calendar.DATE, -1);// 日期回滚一天,也就是最后一天
- int maxDate = a.get(Calendar.DATE);
- return maxDate;
- }
- /**
- * 得到年份
- *
- * @return
- */
- public String getCurrentYear() {
- Calendar c = Calendar.getInstance();
- return c.get(Calendar.YEAR) + "";
- }
- /**
- * 得到月份
- *
- * @return
- */
- public String getCurrentMonth() {
- Calendar c = Calendar.getInstance();
- return (c.get(Calendar.MONTH) + 1) + "";
- }
- /**
- * 获得当天的日期
- *
- * @return
- */
- public String getCurrDay() {
- Calendar c = Calendar.getInstance();
- return c.get(Calendar.DAY_OF_MONTH) + "";
- }
- /**
- * 得到几天/周/月/年后的日期,整数往后推,负数往前移动
- *
- * @param calendar
- * @param calendarType
- * Calendar.DATE,Calendar.WEEK_OF_YEAR,Calendar.MONTH,Calendar.
- * YEAR
- * @param next
- * @return
- */
- public String getDayByDate(Calendar calendar, int calendarType, int next) {
- calendar.add(calendarType, next);
- Date date = calendar.getTime();
- String dateString = date_Formater_1.format(date);
- return dateString;
- }
- }
- String dataStr = DateHelper.getInstance().getDataString_1(null);
- String toStringData = DateHelper.getInstance().stringDateToStringData("yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd", dataStr);
- String date = DateHelper.getInstance().getDayByDate(
- Calendar.getInstance(), Calendar.DATE, 1);
- String week = DateHelper.getInstance().getDayByDate(
- Calendar.getInstance(), Calendar.WEEK_OF_YEAR, 1);
- String month = DateHelper.getInstance().getDayByDate(
- Calendar.getInstance(), Calendar.MONTH, 1);
- String year = DateHelper.getInstance().getDayByDate(
- Calendar.getInstance(), Calendar.YEAR, 1);
- int lastDay = DateHelper.getInstance().getMonthLastDay(2015, 2);
- System.out.println(dataStr);
- System.out.println(toStringData);
- System.out.println(date);
- System.out.println(week);
- System.out.println(month);
- System.out.println(year);
- System.out.println("2月有"+lastDay+"天");
来源: http://www.phpxs.com/code/1002114/