android 日期的各种转换

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yiy91/article/details/52055151

积累的日期转换工具类,会继续补充

public class DateUtils {

    private static final long INTERVAL_IN_MILLISECONDS = 30 * 1000;

    public static String getTimestampString(Date messageDate) {

        boolean isChinese = true;

        String format = null;

        long messageTime = messageDate.getTime();
        if (isSameDay(messageTime)) {
            Calendar calendar = GregorianCalendar.getInstance();
            calendar.setTime(messageDate);
            int hour = calendar.get(Calendar.HOUR_OF_DAY);

            format = "HH:mm";

            if (hour > 17) {                
                if(isChinese){
                    format = "晚上 hh:mm";
                }

            }else if(hour >= 0 && hour <= 6){                
                if(isChinese){
                    format = "凌晨 hh:mm";
                }
            } else if (hour > 11 && hour <= 17) {
                if(isChinese){
                    format = "下午 hh:mm";
                }

            } else {
                if(isChinese){
                    format = "上午 hh:mm";
                }
            }
        } else if (isYesterday(messageTime)) {
            if(isChinese){
                format = "昨天 HH:mm";
            }else{
                format = "MM-dd HH:mm";
            }

        } else {
            if(isChinese){
                format = "M月d日 HH:mm";
            }else{
                format = "MM-dd HH:mm";
            }
        }

        if(isChinese){
            return new SimpleDateFormat(format, Locale.CHINA).format(messageDate);
        }else{
            return new SimpleDateFormat(format, Locale.US).format(messageDate); 
        }
    }

    public static boolean isCloseEnough(long time1, long time2) {
        // long time1 = date1.getTime();
        // long time2 = date2.getTime();
        long delta = time1 - time2;
        if (delta < 0) {
            delta = -delta;
        }
        return delta < INTERVAL_IN_MILLISECONDS;
    }

    public static boolean isSameDay(long inputTime) {

        TimeInfo tStartAndEndTime = getTodayStartAndEndTime();
        if(inputTime>tStartAndEndTime.getStartTime()&&inputTime<tStartAndEndTime.getEndTime())
            return true;
        return false;
    }

    public static boolean isYesterday(long inputTime) {
        TimeInfo yStartAndEndTime = getYesterdayStartAndEndTime();
        if(inputTime>yStartAndEndTime.getStartTime()&&inputTime<yStartAndEndTime.getEndTime())
            return true;
        return false;
    }

    public static Date StringToDate(String dateStr, String formatStr) {
        DateFormat format = new SimpleDateFormat(formatStr);
        Date date = null;
        try {
            date = format.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
    /**
     * 
     * @param timeLength Millisecond
     * @return
     */
    public static String toTime(int timeLength) {
        timeLength /= 1000;
        int minute = timeLength / 60;
        int hour = 0;
        if (minute >= 60) {
            hour = minute / 60;
            minute = minute % 60;
        }
        int second = timeLength % 60;
        // return String.format("%02d:%02d:%02d", hour, minute, second);
        return String.format("%02d:%02d", minute, second);
    }
    /**
     * 
     * @param timeLength second
     * @return
     */
    public static String toTimeBySecond(int timeLength) {
//      timeLength /= 1000;
        int minute = timeLength / 60;
        int hour = 0;
        if (minute >= 60) {
            hour = minute / 60;
            minute = minute % 60;
        }
        int second = timeLength % 60;
        // return String.format("%02d:%02d:%02d", hour, minute, second);
        return String.format("%02d:%02d", minute, second);
    }



    public static TimeInfo getYesterdayStartAndEndTime() {
        Calendar calendar1 = Calendar.getInstance();
        calendar1.add(Calendar.DATE, -1);
        calendar1.set(Calendar.HOUR_OF_DAY, 0);
        calendar1.set(Calendar.MINUTE, 0);
        calendar1.set(Calendar.SECOND, 0);
        calendar1.set(Calendar.MILLISECOND, 0);

        Date startDate = calendar1.getTime();
        long startTime = startDate.getTime();

        Calendar calendar2 = Calendar.getInstance();
        calendar2.add(Calendar.DATE, -1);
        calendar2.set(Calendar.HOUR_OF_DAY, 23);
        calendar2.set(Calendar.MINUTE, 59);
        calendar2.set(Calendar.SECOND, 59);
        calendar2.set(Calendar.MILLISECOND, 999);
        Date endDate = calendar2.getTime();
        long endTime = endDate.getTime();
        TimeInfo info = new TimeInfo();
        info.setStartTime(startTime);
        info.setEndTime(endTime);
        return info;
    }

    public static TimeInfo getTodayStartAndEndTime() {
        Calendar calendar1 = Calendar.getInstance();
        calendar1.set(Calendar.HOUR_OF_DAY, 0);
        calendar1.set(Calendar.MINUTE, 0);
        calendar1.set(Calendar.SECOND, 0);
        calendar1.set(Calendar.MILLISECOND, 0);
        Date startDate = calendar1.getTime();
        long startTime = startDate.getTime();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss S");

        Calendar calendar2 = Calendar.getInstance();
        calendar2.set(Calendar.HOUR_OF_DAY, 23);
        calendar2.set(Calendar.MINUTE, 59);
        calendar2.set(Calendar.SECOND, 59);
        calendar2.set(Calendar.MILLISECOND, 999);
        Date endDate = calendar2.getTime();
        long endTime = endDate.getTime();
        TimeInfo info = new TimeInfo();
        info.setStartTime(startTime);
        info.setEndTime(endTime);
        return info;
    }

    public static TimeInfo getBeforeYesterdayStartAndEndTime() {
        Calendar calendar1 = Calendar.getInstance();
        calendar1.add(Calendar.DATE, -2);
        calendar1.set(Calendar.HOUR_OF_DAY, 0);
        calendar1.set(Calendar.MINUTE, 0);
        calendar1.set(Calendar.SECOND, 0);
        calendar1.set(Calendar.MILLISECOND, 0);
        Date startDate = calendar1.getTime();
        long startTime = startDate.getTime();

        Calendar calendar2 = Calendar.getInstance();
        calendar2.add(Calendar.DATE, -2);
        calendar2.set(Calendar.HOUR_OF_DAY, 23);
        calendar2.set(Calendar.MINUTE, 59);
        calendar2.set(Calendar.SECOND, 59);
        calendar2.set(Calendar.MILLISECOND, 999);
        Date endDate = calendar2.getTime();
        long endTime = endDate.getTime();
        TimeInfo info = new TimeInfo();
        info.setStartTime(startTime);
        info.setEndTime(endTime);
        return info;
    }

    /**
     * endtime为今天
     * @return
     */
    public static TimeInfo getCurrentMonthStartAndEndTime(){
        Calendar calendar1 = Calendar.getInstance();
        calendar1.set(Calendar.DATE, 1);
        calendar1.set(Calendar.HOUR_OF_DAY, 0);
        calendar1.set(Calendar.MINUTE, 0);
        calendar1.set(Calendar.SECOND, 0);
        calendar1.set(Calendar.MILLISECOND, 0);
        Date startDate = calendar1.getTime();
        long startTime = startDate.getTime();

        Calendar calendar2 = Calendar.getInstance();
//      calendar2.set(Calendar.HOUR_OF_DAY, 23);
//      calendar2.set(Calendar.MINUTE, 59);
//      calendar2.set(Calendar.SECOND, 59);
//      calendar2.set(Calendar.MILLISECOND, 999);
        Date endDate = calendar2.getTime();
        long endTime = endDate.getTime();
        TimeInfo info = new TimeInfo();
        info.setStartTime(startTime);
        info.setEndTime(endTime);
        return info;
    }

    public static TimeInfo getLastMonthStartAndEndTime(){
        Calendar calendar1 = Calendar.getInstance();
        calendar1.add(Calendar.MONTH, -1);
        calendar1.set(Calendar.DATE, 1);
        calendar1.set(Calendar.HOUR_OF_DAY, 0);
        calendar1.set(Calendar.MINUTE, 0);
        calendar1.set(Calendar.SECOND, 0);
        calendar1.set(Calendar.MILLISECOND, 0);
        Date startDate = calendar1.getTime();
        long startTime = startDate.getTime();

        Calendar calendar2 = Calendar.getInstance();
        calendar2.add(Calendar.MONTH, -1);
        calendar2.set(Calendar.DATE, 1);
        calendar2.set(Calendar.HOUR_OF_DAY, 23);
        calendar2.set(Calendar.MINUTE, 59);
        calendar2.set(Calendar.SECOND, 59);
        calendar2.set(Calendar.MILLISECOND, 999);
        calendar2.roll(Calendar.DATE, -1);
        Date endDate = calendar2.getTime();
        long endTime = endDate.getTime();
        TimeInfo info = new TimeInfo();
        info.setStartTime(startTime);
        info.setEndTime(endTime);
        return info;
    }

    public static String getTimestampStr() {
        return Long.toString(System.currentTimeMillis());        
    }

    /**
     * 获取当前星期几
     * @return 星期几
     */
    public static String getCurrentWeek(){
        String week = "星期";
        Calendar calendar = Calendar.getInstance();
        int day = calendar.get(Calendar.DAY_OF_WEEK);
        switch (day){
            case Calendar.SUNDAY:
                week += "日";
                break;
            case Calendar.MONDAY:
                week += "一";
                break;
            case Calendar.TUESDAY:
                week += "二";
                break;
            case Calendar.WEDNESDAY:
                week += "三";
                break;
            case Calendar.THURSDAY:
                week += "四";
                break;
            case Calendar.FRIDAY:
                week += "五";
                break;
            case Calendar.SATURDAY:
                week += "六";
                break;
        }
        return week;
    }

    /**
     * 获取当前时间
     * @return HH:mm
     */
    public static String getCurrentTime(){
        String format = "HH:mm";
        Date curDate = new Date(System.currentTimeMillis());//获取当前时间
        return new SimpleDateFormat(format).format(curDate);
    }

    /**
     * 获取当前日期
     * @return yyyy-MM-dd
     */
    public static String getCurrentDate(){
        String format = "yyyy-MM-dd";
        Date curDate = new Date(System.currentTimeMillis());//获取当前时间
        return new SimpleDateFormat(format).format(curDate);
    }
    /**
     * date转换为Format     
     */
    public static String converToString(Date date,String strFormat) {
        SimpleDateFormat format = new SimpleDateFormat(strFormat);
        return format.format(date);
    }
    /**
     * Format转换为Date
     */
    public static Date converToDate(String strDate,String strFormat) {
        DateFormat format = new SimpleDateFormat(strFormat);
        Date date = null;
        try{
            date = format.parse(strDate);
        }catch (Exception e){

        }

        return date;
    }

    /**
     * 获取两周内特定时间的周几
     * @param time 毫秒时间
     * @return 周几 下周几  x月x日
     */
    public static String getWeekByTime(long time){

        String strWeek = "";
        Calendar calendar1 = Calendar.getInstance();
        calendar1.setTimeInMillis(time);
        int day = calendar1.get(Calendar.DAY_OF_WEEK);
        int week = calendar1.get(Calendar.WEEK_OF_YEAR);

        int curWeek = Calendar.getInstance().get(Calendar.WEEK_OF_YEAR);
        int curDay = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
        if (curWeek == week){
            //同一周
            strWeek = "周";
            if (curDay == day){
                return "今日";
            }else if (curDay == Calendar.SUNDAY){
                strWeek = "下周";
            }
        }else if(week == curWeek + 1){
            //下周
            strWeek = "下周";
            if (day == Calendar.SUNDAY){
                strWeek = "周";
            }
        }else {
            //显示 x月x日
            return new SimpleDateFormat("M月d日", Locale.CHINA).format(new Date(time));
        }

         switch (day) {
             case Calendar.SUNDAY:
                 strWeek += "日";
                  break;
              case Calendar.MONDAY:
                  strWeek += "一";
                  break;
              case Calendar.TUESDAY:
                  strWeek += "二";
                  break;
              case Calendar.WEDNESDAY:
                  strWeek += "三";
                  break;
              case Calendar.THURSDAY:
                  strWeek += "四";
                  break;
              case Calendar.FRIDAY:
                  strWeek += "五";
                  break;
              case Calendar.SATURDAY:
                  strWeek += "六";
                  break;
        }

        return strWeek;
    }

}
/**
 * 时间信息
 */
public class TimeInfo {
    private long startTime;
    private long endTime;

    public TimeInfo() {
    }

    public long getStartTime() {
        return this.startTime;
    }

    public void setStartTime(long var1) {
        this.startTime = var1;
    }

    public long getEndTime() {
        return this.endTime;
    }

    public void setEndTime(long var1) {
        this.endTime = var1;
    }
}

猜你喜欢

转载自blog.csdn.net/yiy91/article/details/52055151