zoukankan      html  css  js  c++  java
  • 日期时间处理

    最近搞一个关于事件趋势的工程,然后对于日期的处理整理如下:


    public class ZtDateUtil {

    private static final SimpleDateFormat formate = new SimpleDateFormat("yyyy-MM-dd");

    public static String getCurrentTime(Date date, int day) {
    Calendar cal = Calendar.getInstance();// 使用默认时区和语言环境获得一个日历
    cal.setTime(date);
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");// 通过格式化输出日期
    cal.add(Calendar.DAY_OF_MONTH, day);// 取当前日期
    return format.format(cal.getTime());
    }

    /*时间String转Date*/
    public static Date converToDate(String dateStr) {
    if (!StringUtils.isBlank(dateStr)){
    try {
    return formate.parse(dateStr);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    }
    return null;
    }

    /**
    * 获得指定日期的前一天
    * @param specifiedDay
    * @return
    * @throws Exception
    */
    public static String getSpecifiedDayBefore(String specifiedDay, Integer i) {
    //SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    Calendar c = Calendar.getInstance();
    Date date = null;
    try {
    date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    c.setTime(date);
    int day = c.get(Calendar.DATE);
    c.set(Calendar.DATE, day - i);

    String dayBefore = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
    return dayBefore;
    }

    /**
    * 获得指定日期的后一天
    * @param specifiedDay
    * @return
    */
    public static String getSpecifiedDayAfter(String specifiedDay, Integer i) {
    Calendar c = Calendar.getInstance();
    Date date = null;
    try {
    date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    c.setTime(date);
    int day = c.get(Calendar.DATE);
    c.set(Calendar.DATE, day + i);

    String dayAfter = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
    return dayAfter;
    }

    public static String getOpenDateCount(String openedDateInput, Integer i) {
    String openedDate = null;
    switch (i) {
    case 1:
    openedDate = ZtDateUtil.getSpecifiedDayBefore(openedDateInput, 1);
    break;
    case 2:
    openedDate = ZtDateUtil.getSpecifiedDayBefore(openedDateInput, 2);
    break;
    case 3:
    openedDate = ZtDateUtil.getSpecifiedDayBefore(openedDateInput, 3);
    break;
    case 4:
    openedDate = ZtDateUtil.getSpecifiedDayBefore(openedDateInput, 4);
    break;
    case 5:
    openedDate = ZtDateUtil.getSpecifiedDayBefore(openedDateInput, 5);
    break;
    case 6:
    openedDate = ZtDateUtil.getSpecifiedDayBefore(openedDateInput, 6);
    break;
    case 7:
    openedDate = ZtDateUtil.getSpecifiedDayBefore(openedDateInput, 7);
    break;
    }
    return openedDate;
    }

    /**
    * 获取两个日期相差几个月
    * @author 石冬冬-Heil Hilter(dd.shi02@zuche.com)
    * @date 2016-11-30 下午7:57:32
    * @param start
    * @param end
    * @return
    */
    public static int getMonth(Date start, Date end) {
    if (start.after(end)) {
    Date t = start;
    start = end;
    end = t;
    }
    Calendar startCalendar = Calendar.getInstance();
    startCalendar.setTime(start);
    Calendar endCalendar = Calendar.getInstance();
    endCalendar.setTime(end);
    Calendar temp = Calendar.getInstance();
    temp.setTime(end);
    temp.add(Calendar.DATE, 1);

    int year = endCalendar.get(Calendar.YEAR) - startCalendar.get(Calendar.YEAR);
    int month = endCalendar.get(Calendar.MONTH) - startCalendar.get(Calendar.MONTH);

    if ((startCalendar.get(Calendar.DATE) == 1) && (temp.get(Calendar.DATE) == 1)) {
    return year * 12 + month + 1;
    } else if ((startCalendar.get(Calendar.DATE) != 1) && (temp.get(Calendar.DATE) == 1)) {
    return year * 12 + month;
    } else if ((startCalendar.get(Calendar.DATE) == 1) && (temp.get(Calendar.DATE) != 1)) {
    return year * 12 + month;
    } else {
    return (year * 12 + month - 1) < 0 ? 0 : (year * 12 + month);
    }
    }

    /*获取间隔的月数*/
    public static Integer getMonthsNum(String dstr1, String dstr2) {
    try {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//小写的mm表示的是分钟
    Date date1 = sdf.parse(dstr1);
    Date date2 = sdf.parse(dstr2);
    Integer monthsNum = ZtDateUtil.getMonth(date1, date2);
    return monthsNum;
    } catch (ParseException e) {
    e.printStackTrace();
    }
    return null;
    }

    /*获取月份的第一天*/
    public static String getFirstDay(String date, Integer num) {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    //获取前月的第一天
    Calendar cal = Calendar.getInstance();//获取当前日期
    /*对前端出入的日期进行Date格式化*/
    Date date1 = null;
    Integer count = -num;
    try {
    date1 = format.parse(date);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    cal.setTime(date1);
    cal.add(Calendar.MONTH, count);
    cal.set(Calendar.DAY_OF_MONTH, 1);//设置为1号,当前日期既为本月第一天
    String firstDay = format.format(cal.getTime());
    return firstDay;
    }

    /*获取月份的最后一天*/
    public static String getLastDay(String date, Integer num) {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    //获取前月的第一天
    Calendar cal = Calendar.getInstance();
    /*对前端出入的日期进行Date格式化*/
    Date date1 = null;
    Integer count = 1 - num;
    try {
    date1 = format.parse(date);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    cal.setTime(date1);
    cal.add(Calendar.MONTH, count);
    cal.set(Calendar.DAY_OF_MONTH, 0);//设置为1号,当前日期既为本月第一天
    String lastDay = format.format(cal.getTime());
    return lastDay;
    }

    /*获取前几个月*/
    public static String getMonthsBefore(String date, Integer num) {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    Date date1 = null;
    String beforeMonth = null;
    Calendar cale = Calendar.getInstance();
    try {
    date1 = format.parse(date);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    cale.setTime(date1);
    cale.add(Calendar.MONTH, -num);
    cale.set(Calendar.DAY_OF_MONTH, 0);//设置为1号,当前日期既为本月第一天
    beforeMonth = format.format(cale.getTime());
    return beforeMonth;
    }

    /*计算自然周*/
    public static List<String> getWeekFirsLast(String date, Integer num) {
    List<String> containDays = new ArrayList<String>();
    Calendar week = Calendar.getInstance();
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    Integer count1 = 1 - num;
    try {
    week.setTime(format.parse(date));
    week.add(Calendar.WEEK_OF_YEAR, count1);
    date = format.format(week.getTime());
    Calendar c = Calendar.getInstance();
    c.setTime(format.parse(date));
    c.set(Calendar.DAY_OF_WEEK, 1);
    /*周中第一天*/
    date = format.format(c.getTime());
    containDays.add(date);
    c.set(Calendar.DAY_OF_WEEK, 7);
    /*周中最后一天*/
    date = format.format(c.getTime());
    containDays.add(date);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    return containDays;
    }

    /*计算相差的周数*/
    public static Integer getcountTwoDayWeek(String startDate, String endDate) {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    if (StringUtils.isNotEmpty(startDate) && StringUtils.isNotEmpty(endDate)) {
    Date start = null;
    Date end = null;
    try {
    start = format.parse(startDate);
    end = format.parse(endDate);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    Calendar cal = Calendar.getInstance();
    cal.setTime(start);
    long time1 = cal.getTimeInMillis();
    cal.setTime(end);
    long time2 = cal.getTimeInMillis();
    long between_days = (time2 - time1) / (1000 * 3600 * 24);
    Double days = Double.parseDouble(String.valueOf(between_days));
    if ((days / 7) > 0 && (days / 7) <= 1) {
    //不满一周的按一周算
    return 1;
    } else if (days / 7 > 1) {
    int day = days.intValue();
    if (day % 7 > 0) {
    return day / 7 + 1;
    } else {
    return day / 7;
    }
    } else if ((days / 7) == 0) {
    return 0;
    } else {
    //负数返还null
    return null;
    }
    }
    return null;
    }
    }
  • 相关阅读:
    车羊问题的一种简洁证明
    linux document viewer 中文乱码、方块
    java编程方式生成CA证书
    First JNI
    opensuse 上面运行eclipse崩溃的问题
    java在非安全网络上建立可信任安全的通道(2/3)
    java在非安全网络上建立可信任安全的通道(1/3)
    java编程方式用CA给证书进行签名/签发证书
    泛型类里面获取到泛型的类型
    安全领域的一些概念
  • 原文地址:https://www.cnblogs.com/April-Chou-HelloWorld/p/6635266.html
Copyright © 2011-2022 走看看