/** * 日期操作工具类. * @Project ERPForAndroid * @Package com.ymerp.android.tools * @author chenlin * @version 1.0 * @Date 2013年5月11日 */@SuppressLint("SimpleDateFormat")public class DateUtil {    private static final String FORMAT = "yyyy-MM-dd HH:mm:ss";    private static final SimpleDateFormat datetimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");    private static final SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");    public static Date str2Date(String str) {        return str2Date(str, null);    }    /** * 字符串转时间 * @param str * @param format * @return */    public static Date str2Date(String str, String format) {        if (str == null || str.length() == 0) {            return null;        }        if (format == null || format.length() == 0) {            format = FORMAT;        }        Date date = null;        try {            SimpleDateFormat sdf = new SimpleDateFormat(format);            date = sdf.parse(str);        } catch (Exception e) {            e.printStackTrace();        }        return date;    }    public static Calendar str2Calendar(String str) {        return str2Calendar(str, null);    }    public static Calendar str2Calendar(String str, String format) {        Date date = str2Date(str, format);        if (date == null) {            return null;        }        Calendar c = Calendar.getInstance();        c.setTime(date);        return c;    }    public static String date2Str(Calendar c) {// yyyy-MM-dd HH:mm:ss        return date2Str(c, null);    }    public static String date2Str(Calendar c, String format) {        if (c == null) {            return null;        }        return date2Str(c.getTime(), format);    }    public static String date2Str(Date d) {// yyyy-MM-dd HH:mm:ss        return date2Str(d, null);    }    public static String date2Str(Date d, String format) {// yyyy-MM-dd HH:mm:ss        if (d == null) {            return null;        }        if (format == null || format.length() == 0) {            format = FORMAT;        }        SimpleDateFormat sdf = new SimpleDateFormat(format);        String s = sdf.format(d);        return s;    }    public static String getCurDateStr() {        Calendar c = Calendar.getInstance();        c.setTime(new Date());        return c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DAY_OF_MONTH) + "-"                + c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE) + ":" + c.get(Calendar.SECOND);    }    /** * 获得当前日期的字符串格式 * * @param format * @return */    public static String getCurDateStr(String format) {        Calendar c = Calendar.getInstance();        return date2Str(c, format);    }    /** * 格式到秒 * * @param time * @return */    public static String getMillon(long time) {        return new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(time);    }    /** * 格式到天 * * @param time * @return */    public static String getDay(long time) {        return new SimpleDateFormat("yyyy-MM-dd").format(time);    }    /** * 格式到毫秒 * * @param time * @return */    public static String getSMillon(long time) {        return new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss-SSS").format(time);    }    /** * 字符串转换到时间格式 * * @param dateStr * 需要转换的字符串 * @param formatStr * 需要格式的目标字符串 举例 yyyy-MM-dd * @return Date 返回转换后的时间 * @throws ParseException * 转换异常 */    public static Date StringToDate(String dateStr, String formatStr) {        DateFormat sdf = new SimpleDateFormat(formatStr);        Date date = null;        try {            date = sdf.parse(dateStr);        } catch (ParseException e) {            e.printStackTrace();        }        return date;    }    /** * 转化时间输入时间与当前时间的间隔 * * @param timestamp * @return */    public static String converTime(long timestamp) {        long currentSeconds = System.currentTimeMillis() / 1000;        long timeGap = currentSeconds - timestamp;// 与现在时间相差秒数        String timeStr = null;        if (timeGap > 24 * 60 * 60) {// 1天以上            timeStr = timeGap / (24 * 60 * 60) + "天前";        } else if (timeGap > 60 * 60) {// 1小时-24小时            timeStr = timeGap / (60 * 60) + "小时前";        } else if (timeGap > 60) {// 1分钟-59分钟            timeStr = timeGap / 60 + "分钟前";        } else {// 1秒钟-59秒钟            timeStr = "刚刚";        }        return timeStr;    }    /** * 把字符串转化为时间格式 * * @param timestamp * @return */    public static String getStandardTime(long timestamp) {        SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日 HH:mm");        Date date = new Date(timestamp * 1000);        sdf.format(date);        return sdf.format(date);    }    /** * 获得当前日期时间 日期时间格式yyyy-MM-dd HH:mm:ss * * @return */    public static String currentDatetime() {        return datetimeFormat.format(now());    }    /** * 格式化日期时间 日期时间格式yyyy-MM-dd HH:mm:ss * * @return */    public static String formatDatetime(Date date) {        return datetimeFormat.format(date);    }    /** * 获得当前时间 时间格式HH:mm:ss * * @return */    public static String currentTime() {        return timeFormat.format(now());    }    /** * 格式化时间 时间格式HH:mm:ss * * @return */    public static String formatTime(Date date) {        return timeFormat.format(date);    }    /** * 获得当前时间的<code>java.util.Date</code>对象 * * @return */    public static Date now() {        return new Date();    }    public static Calendar calendar() {        Calendar cal = GregorianCalendar.getInstance(Locale.CHINESE);        cal.setFirstDayOfWeek(Calendar.MONDAY);        return cal;    }    /** * 获得当前时间的毫秒数 * * 详见{@link System#currentTimeMillis()} * * @return */    public static long millis() {        return System.currentTimeMillis();    }    /** * * 获得当前Chinese月份 * * @return */    public static int month() {        return calendar().get(Calendar.MONTH) + 1;    }    /** * 获得月份中的第几天 * * @return */    public static int dayOfMonth() {        return calendar().get(Calendar.DAY_OF_MONTH);    }    /** * 今天是星期的第几天 * * @return */    public static int dayOfWeek() {        return calendar().get(Calendar.DAY_OF_WEEK);    }    /** * 今天是年中的第几天 * * @return */    public static int dayOfYear() {        return calendar().get(Calendar.DAY_OF_YEAR);    }    /** * 判断原日期是否在目标日期之前 * * @param src * @param dst * @return */    public static boolean isBefore(Date src, Date dst) {        return src.before(dst);    }    /** * 判断原日期是否在目标日期之后 * * @param src * @param dst * @return */    public static boolean isAfter(Date src, Date dst) {        return src.after(dst);    }    /** * 判断两日期是否相同 * * @param date1 * @param date2 * @return */    public static boolean isEqual(Date date1, Date date2) {        return date1.compareTo(date2) == 0;    }    /** * 判断某个日期是否在某个日期范围 * * @param beginDate * 日期范围开始 * @param endDate * 日期范围结束 * @param src * 需要判断的日期 * @return */    public static boolean between(Date beginDate, Date endDate, Date src) {        return beginDate.before(src) && endDate.after(src);    }    /** * 获得当前月的最后一天 * * HH:mm:ss为0,毫秒为999 * * @return */    public static Date lastDayOfMonth() {        Calendar cal = calendar();        cal.set(Calendar.DAY_OF_MONTH, 0); // M月置零        cal.set(Calendar.HOUR_OF_DAY, 0);// H置零        cal.set(Calendar.MINUTE, 0);// m置零        cal.set(Calendar.SECOND, 0);// s置零        cal.set(Calendar.MILLISECOND, 0);// S置零        cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1);// 月份+1        cal.set(Calendar.MILLISECOND, -1);// 毫秒-1        return cal.getTime();    }    /** * 获得当前月的第一天 * * HH:mm:ss SS为零 * * @return */    public static Date firstDayOfMonth() {        Calendar cal = calendar();        cal.set(Calendar.DAY_OF_MONTH, 1); // M月置1        cal.set(Calendar.HOUR_OF_DAY, 0);// H置零        cal.set(Calendar.MINUTE, 0);// m置零        cal.set(Calendar.SECOND, 0);// s置零        cal.set(Calendar.MILLISECOND, 0);// S置零        return cal.getTime();    }    private static Date weekDay(int week) {        Calendar cal = calendar();        cal.set(Calendar.DAY_OF_WEEK, week);        return cal.getTime();    }    /** * 获得周五日期 * * 注:日历工厂方法{@link #calendar()}设置类每个星期的第一天为Monday,US等每星期第一天为sunday * * @return */    public static Date friday() {        return weekDay(Calendar.FRIDAY);    }    /** * 获得周六日期 * * 注:日历工厂方法{@link #calendar()}设置类每个星期的第一天为Monday,US等每星期第一天为sunday * * @return */    public static Date saturday() {        return weekDay(Calendar.SATURDAY);    }    /** * 获得周日日期 注:日历工厂方法{@link #calendar()}设置类每个星期的第一天为Monday,US等每星期第一天为sunday * * @return */    public static Date sunday() {        return weekDay(Calendar.SUNDAY);    }    /** * 将字符串日期时间转换成java.util.Date类型 日期时间格式yyyy-MM-dd HH:mm:ss * * @param datetime * @return */    public static Date parseDatetime(String datetime) throws ParseException {        return datetimeFormat.parse(datetime);    }    /** * 将字符串日期转换成java.util.Date类型 日期时间格式yyyy-MM-dd * * @param date * @return * @throws ParseException */    public static Date parseDate(String date) throws ParseException {        return dateFormat.parse(date);    }    /** * 将字符串日期转换成java.util.Date类型 时间格式 HH:mm:ss * * @param time * @return * @throws ParseException */    public static Date parseTime(String time) throws ParseException {        return timeFormat.parse(time);    }    /** * 根据自定义pattern将字符串日期转换成java.util.Date类型 * * @param datetime * @param pattern * @return * @throws ParseException */    public static Date parseDatetime(String datetime, String pattern) throws ParseException {        SimpleDateFormat format = (SimpleDateFormat) datetimeFormat.clone();        format.applyPattern(pattern);        return format.parse(datetime);    }    /** * 把秒格式化为分种小时 * * @param second * @return */    public static String parseSecond(int second) {        if (second >= 60) {            return second / 60 + "分";        } else if (second >= 60 * 60) {            return second / 60 * 60 + "时";        } else if (second >= 60 * 60 * 24) {            return second / 60 * 60 + "天";        } else {            return second + "秒";        }    }    /** * 比较时间大小 * @param begin * @param end * @return */    public static int compareDate(String begin, String end) {        DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");        try {            Date beginDate = df.parse(begin);            Date endDate = df.parse(end);            if (beginDate.getTime() < endDate.getTime()) {                return 1;            } else if (beginDate.getTime() > endDate.getTime()) {                return -1;            } else {                return 0;            }        } catch (Exception exception) {            exception.printStackTrace();        }        return 0;    }    /** * 获得年份 * @param date * @return */    public int getYear(Date date){        Calendar c = Calendar.getInstance();        c.setTime(date);        return c.get(Calendar.YEAR);    }    /** * 获得月份 * @param date * @return */    public int getMonth(Date date){        Calendar c = Calendar.getInstance();        c.setTime(date);        return c.get(Calendar.MONTH) + 1;    }    /** * 获得星期几 * @param date * @return */    public int getWeek(Date date){        Calendar c = Calendar.getInstance();        c.setTime(date);        return c.get(Calendar.WEEK_OF_YEAR);    }    /** * 获得日期 * @param date * @return */    public int getDay(Date date){        Calendar c = Calendar.getInstance();        c.setTime(date);        return c.get(Calendar.DATE);    }    /** * 获得天数差 * @param begin * @param end * @return */    public long getDayDiff(Date begin, Date end){        long day = 1;        if(end.getTime() < begin.getTime()){            day = -1;        }else if(end.getTime() == begin.getTime()){            day = 1;        }else {            day += (end.getTime() - begin.getTime())/(24 * 60 * 60 * 1000) ;        }        return day;    }}

更多相关文章

  1. Android中JSON数据格式的简单使用
  2. Android 的常用控件(下拉,日期,时间,单项,多项)
  3. Android中获取系统的时间
  4. android 显示系统时间
  5. android得到系统时间如何判断是白天还是晚上
  6. Android日期对话框
  7. Android中多次弹出相同Toast提示框长时间不消失
  8. Android Studio自动排版格式化(android排版和xml排版)
  9. Android 自带日期(DatePicker)和时间(TimePicker)选择器使用

随机推荐

  1. android 5.0 新特性
  2. Android(安卓)文件操作
  3. Android在Button按钮上同时显示文字和图
  4. android 自定义checkbox
  5. Android(安卓)Tablayout 的使用
  6. webservice1(队列上传 呼叫)
  7. android滑动view
  8. 【Android】自定义 Tabhost
  9. Using smem on Android
  10. android五星评级