zoukankan      html  css  js  c++  java
  • android最新的工具DateHelper

    最新的工具DateHelper

    实用程序类,。的天数来获得一个给定的月份。过了几天去习惯或、周、一个月、日期等。。

    代码例如以下:

    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+"天");

    打印结果

    03-12 15:02:07.102: I/System.out(11457): 2015-03-12 15:02:07
    03-12 15:02:07.102: I/System.out(11457): 2015-03-12
    03-12 15:02:07.102: I/System.out(11457): 2015-03-13 15:02:07
    03-12 15:02:07.102: I/System.out(11457): 2015-03-19 15:02:07
    03-12 15:02:07.102: I/System.out(11457): 2015-04-12 15:02:07
    03-12 15:02:07.102: I/System.out(11457): 2016-03-12 15:02:07
    03-12 15:02:07.102: I/System.out(11457): 2月有28

    其他也可实现获取一段时间之前之后的日期的方法

    非常久曾经找到别人写的代码

    /**
         * 得到一周前的日期
         * 
         * @return
         */
        public String lastWeek() {
            Date date = new Date();
    
            int year = Integer.parseInt(new SimpleDateFormat("yyyy").format(date));
            int month = Integer.parseInt(new SimpleDateFormat("MM").format(date));
            int day = Integer.parseInt(new SimpleDateFormat("dd").format(date)) - 6;
    
            if (day < 1) {
                month -= 1;
                if (month == 0) {
                    year -= 1;
                    month = 12;
                }
                if (month == 4 || month == 6 || month == 9 || month == 11) {
                    day = 30 + day;
                } else if (month == 1 || month == 3 || month == 5 || month == 7
                        || month == 8 || month == 10 || month == 12) {
                    day = 31 + day;
                } else if (month == 2) {
                    if (year == 0 || (year % 4 == 0 && year != 0))
                        day = 29 + day;
                    else
                        day = 28 + day;
                }
            }
            String y = year + "";
            String m = "";
            String d = "";
            if (month < 10)
                m = "0" + month;
            else
                m = month + "";
            if (day < 10)
                d = "0" + day;
            else
                d = day + "";
    
            return y + "-" + m + "-" + d;
        }
    
        /**
         * 获得一月前的日期
         * 
         * @return
         */
        public String lastMonth() {
            Date date = new Date();
    
            int year = Integer.parseInt(new SimpleDateFormat("yyyy").format(date));
            int month = Integer.parseInt(new SimpleDateFormat("MM").format(date)) - 1;
            int day = Integer.parseInt(new SimpleDateFormat("dd").format(date));
            if (month == 0) {
                year -= 1;
                month = 12;
            } else if (day > 28) {
                if (month == 2) {
                    if (year == 0 || (year % 4 == 0 && year != 0)) {
                        day = 29;
                    } else
                        day = 28;
                } else if ((month == 4 || month == 6 || month == 9 || month == 11)
                        && day == 31) {
                    day = 30;
                }
            }
            String y = year + "";
            String m = "";
            String d = "";
            if (month < 10)
                m = "0" + month;
            else
                m = month + "";
            if (day < 10)
                d = "0" + day;
            else
                d = day + "";
    
            return y + "-" + m + "-" + d;
        }
    
        /**
         * 获得一年前的日期
         * 
         * @return
         */
        public String lastYear() {
            Date date = new Date();
            int year = Integer.parseInt(new SimpleDateFormat("yyyy").format(date)) - 1;
            int month = Integer.parseInt(new SimpleDateFormat("MM").format(date));
            int day = Integer.parseInt(new SimpleDateFormat("dd").format(date));
            if (month == 0) {
                year -= 1;
                month = 12;
            } else if (day > 28) {
                if (month == 2) {
                    if (year == 0 || (year % 4 == 0 && year != 0)) {
                        day = 29;
                    } else
                        day = 28;
                }
            }
            String y = year + "";
            String m = "";
            String d = "";
            if (month < 10)
                m = "0" + month;
            else
                m = month + "";
            if (day < 10)
                d = "0" + day;
            else
                d = day + "";
    
            return y + "-" + m + "-" + d;
        }

    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    webService客户端搭建(三)
    webService服务器端搭建(二)
    electron 编译 sqlite3避坑指南---尾部链接有已经编译成功的sqlite3
    解决网页中Waiting (TTFB)数据加载过慢的问题
    Node-sqlite3多字段插入数据问题
    win上使用nvm管理node版本
    centos系统设置局域网静态IP
    将win平台上的mysql数据复制到linux上报错Can't write; duplicate key in table
    win上配置nginx
    Nodejs解决所有跨域请求
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4841050.html
Copyright © 2011-2022 走看看