使用java的Calendar对象获得当前日期

 更新时间:2015年07月02日 08:39:03   投稿:hebedich  
本文给大家分享的是使用使用java的Calendar对象获得当前日期的上几个度开始、结束时间,主要思路是先获得当前季度的开始和结束日期,在当前日期的基础上往前推3个月即上个季度的开始和结束日期,十分的实用,小伙伴们可以参考下。

思路:

先获得当前季度的开始和结束日期,在当前日期的基础上往前推3个月即上个季度的开始和结束日期

/**
   * @param flag true:开始日期;false:结束日期
   * @return
   */
  public static String getLastQuarterTime(boolean flag){
    SimpleDateFormat shortSdf = new SimpleDateFormat("yyyy-MM-dd");
    SimpleDateFormat longSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     
    String resultDate="";
    Date now = null;
    try {
      Calendar calendar = Calendar.getInstance();
      int currentMonth = calendar.get(Calendar.MONTH) + 1;
      //true:开始日期;false:结束日期
      if(flag){
        if (currentMonth >= 1 && currentMonth <= 3)
          calendar.set(Calendar.MONTH, 0);
        else if (currentMonth >= 4 && currentMonth <= 6)
          calendar.set(Calendar.MONTH, 3);
        else if (currentMonth >= 7 && currentMonth <= 9)
          calendar.set(Calendar.MONTH, 6);
        else if (currentMonth >= 10 && currentMonth <= 12)
          calendar.set(Calendar.MONTH, 9);
        calendar.set(Calendar.DATE, 1);
         
        now = longSdf.parse(shortSdf.format(calendar.getTime()) + " 00:00:00");
      }else{
        if (currentMonth >= 1 && currentMonth <= 3) {
          calendar.set(Calendar.MONTH, 2);
          calendar.set(Calendar.DATE, 31);
        } else if (currentMonth >= 4 && currentMonth <= 6) {
          calendar.set(Calendar.MONTH, 5);
          calendar.set(Calendar.DATE, 30);
        } else if (currentMonth >= 7 && currentMonth <= 9) {
          calendar.set(Calendar.MONTH, 8);
          calendar.set(Calendar.DATE, 30);
        } else if (currentMonth >= 10 && currentMonth <= 12) {
          calendar.set(Calendar.MONTH, 11);
          calendar.set(Calendar.DATE, 31);
        }
        now = longSdf.parse(shortSdf.format(calendar.getTime()) + " 23:59:59");
      }
      calendar.setTime(now);// 设置日期
      calendar.add(Calendar.MONTH, -3);
      resultDate = longSdf.format(calendar.getTime());
       
    } catch (Exception e) {
      ;
    }
    return resultDate;
  }

相关文章

  • Spring Boot 优雅整合多数据源

    Spring Boot 优雅整合多数据源

    这篇文章主要介绍了Spring Boot 优雅整合多数据源,多数据源就是在一个单一应用中涉及到了两个及以上的数据库,更多相关内容需要的小伙伴可以参考下面文章介绍
    2022-05-05
  • IDEA 设置 SpringBoot logback 彩色日志的解决方法 附配置文件

    IDEA 设置 SpringBoot logback 彩色日志的解决方法 附配置文件

    这篇文章主要介绍了IDEA 设置 SpringBoot logback 彩色日志(附配置文件)的操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-12-12
  • Java8时间api之LocalDate/LocalDateTime的用法详解

    Java8时间api之LocalDate/LocalDateTime的用法详解

    在项目中,时间的使用必不可少,而java8之前的时间api Date和Calander等在使用上存在着很多问题,于是,jdk1.8引进了新的时间api-LocalDateTime,本文就来讲讲它的具体使用吧
    2023-05-05
  • 如何通过java获取文件名和扩展名

    如何通过java获取文件名和扩展名

    这篇文章主要介绍了如何通过java获取文件名和扩展名,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • SpringBoot详解实现自定义异常处理页面方法

    SpringBoot详解实现自定义异常处理页面方法

    SpringBoot是Spring全家桶的成员之一,是一种整合Spring技术栈的方式(或者说是框架),同时也是简化Spring的一种快速开发的脚手架
    2022-06-06
  • 华为技术专家讲解JVM内存模型(收藏)

    华为技术专家讲解JVM内存模型(收藏)

    这篇文章主要介绍了华为技术专家讲解JVM内存模型(收藏)的相关知识,本文给大家介绍的非常详细,具有一定的收藏借鉴价值,需要的朋友可以参考下
    2021-05-05
  • SpringBoot之RabbitMQ的使用方法

    SpringBoot之RabbitMQ的使用方法

    这篇文章主要介绍了SpringBoot之RabbitMQ的使用方法,详细的介绍了2种模式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • Spring Cache手动清理Redis缓存

    Spring Cache手动清理Redis缓存

    这篇文章主要介绍了Spring Cache手动清理Redis缓存,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Java中有什么工具可以进行代码反编译详解

    Java中有什么工具可以进行代码反编译详解

    这篇文章主要介绍了Java中有什么工具可以进行代码反编译的相关资,料,包括JD-GUI、CFR、Procyon、Fernflower、Javap、BytecodeViewer、Krakatau和JAD,每种工具都有其特点和适用场景,需要的朋友可以参考下
    2025-03-03
  • java 中Executor, ExecutorService 和 Executors 间的不同

    java 中Executor, ExecutorService 和 Executors 间的不同

    这篇文章主要介绍了java 中Executor, ExecutorService 和 Executors 间的不同的相关资料,需要的朋友可以参考下
    2017-06-06

最新评论