`
lfc_jack
  • 浏览: 144982 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

java写的日期工具,根据设置日期获取指定的一周或者一个月的所有日期

 
阅读更多
在做项目中遇到一个关于日记的问题,国外算一周是从周末到周六,而国内一周是从周一到周天。很多软件需要获取一个月或者一周的所有日期来进行数据统计,为了方便大家开发,避免重复劳动。特地写了一个DateTools工具类,使用方法都在main函数里。


import java.text.Format;  
import java.text.ParseException;  
import java.text.SimpleDateFormat;  
import java.util.ArrayList;  
import java.util.Calendar;  
import java.util.Date;  
import java.util.List;  
  
public class DateTools {  
       
    public static void main(String[] args) {  
         System.out.println("--------------当前日期下一周的每一天--------------");  
     List<String> lst=  getALlweekDays();//获取当前日期下,一周的每一天  
     for(String s:lst)  
     {  
         System.out.println(s);  
     }  
     List <String>lst2=getAllDaysMonth();//获取当前日期下,一个月的每一天  
     System.out.println("--------------一个月的每一天--------------");  
     for(String s2:lst2)  
     {  
       System.out.println(s2);  
     }  
     System.out.println("--------------根据特定的日期‘2014-8-1’获取特定日期所在一周的每一天--------------");  
     Date d=DateTools.paraseStringToDate("2014-8-1");  
     List <String>lst3=DateTools.getAllweekDays(d);  
     for(String s3:lst3)  
     {  
         System.out.println(s3);  
     }  
     System.out.println("--------------根据特定的日期‘2014-8-1’获取特定日期所在一个月的每一天--------------");  
     Date d2=DateTools.paraseStringToDate("2014-8-1");  
     List <String>lst4=DateTools.getAllDaysMonthByDate(d2);  
     for(String s3:lst4)  
     {  
         System.out.println(s3);  
     }  
       
    }  
   
    private static final int FIRST_DAY = Calendar.MONDAY;  
    private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
      
    public String getMonthStart()//获取月初日期  
    {  
       Date d = new Date();  
          // 月初  
       // System.out.println("月初" + sdf.format(getMonthStart(d)));  
       return sdf.format(getMonthStart(d));  
    }  
    public static String getMonthStartStr(Date d)//根据传入日期来获取一个月的开始时间  
    {  
       return sdf.format(getMonthStart(d));  
    }  
   public static String getMonthEndStr(Date d)//根据传入时间获取一个月月末时间  
    {  
         
      return sdf.format(getMonthEnd(d));  
    }  
   public static List<String>getAllDaysMonthByDate(Date d)//根据传入的日期获取所在月份所有日期  
   {  
        List<String> lst=new ArrayList();  
        Date date = getMonthStart(d);  
        Date monthEnd = getMonthEnd(d);  
        while (!date.after(monthEnd)) {  
            //System.out.println(sdf.format(date));  
         lst.add(sdf.format(date));  
            date = getNext(date);  
        }  
        return lst;  
   }  
   public static Date paraseStringToDate(String timestr )//将字符串转化为日期  
   {  
       Date date=null;  
        
            
           Format f = new SimpleDateFormat("yyyy-MM-dd");  
            try {  
                date = (Date) f.parseObject(timestr);  
            } catch (ParseException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
       return date;  
   }  
    
   public String getMonthEnd()//获取月末日期  
   {  
       Date d = new Date();  
      return sdf.format(getMonthEnd(d));  
   }  
    public static List<String>getAllDaysMonth()  
    {  
        List<String> lst=new ArrayList();  
         Date d = new Date();  
         // 月初  
        // System.out.println("月初" + sdf.format(getMonthStart(d)));  
         // 月末  
         //System.out.println("月末" + sdf.format(getMonthEnd(d)));  
    
         Date date = getMonthStart(d);  
         Date monthEnd = getMonthEnd(d);  
         while (!date.after(monthEnd)) {  
             //System.out.println(sdf.format(date));  
             lst.add(sdf.format(date));  
             date = getNext(date);  
         }  
         return lst;  
    }  
    private static Date getMonthStart(Date date) {  
        Calendar calendar = Calendar.getInstance();  
        calendar.setTime(date);  
        int index = calendar.get(Calendar.DAY_OF_MONTH);  
        calendar.add(Calendar.DATE, (1 - index));  
        return calendar.getTime();  
    }  
   
    private static Date getMonthEnd(Date date) {  
        Calendar calendar = Calendar.getInstance();  
        calendar.setTime(date);  
        calendar.add(Calendar.MONTH, 1);  
        int index = calendar.get(Calendar.DAY_OF_MONTH);  
        calendar.add(Calendar.DATE, (-index));  
        return calendar.getTime();  
    }  
   
    private static Date getNext(Date date) {  
        Calendar calendar = Calendar.getInstance();  
        calendar.setTime(date);  
        calendar.add(Calendar.DATE, 1);  
        return calendar.getTime();  
    }  
    public static String getWeekStartDay(Date d) {//根据日期来获取一周的第一天  
        Calendar c = Calendar.getInstance();  
       List <String>lst=new ArrayList();  
        c.setTime(d);  
        setToFirstDay(c);  
        for (int i = 0; i < 7; i++) {  
            String day = printDay(c);  
            lst.add(day);  
            c.add(Calendar.DATE, 1);  
        }  
        return lst.get(0);  
    }  
    public static String getWeekEndtDay(Date d) {//根据日期来获取一周的最后一天  
        Calendar c = Calendar.getInstance();  
       List <String>lst=new ArrayList();  
        c.setTime(d);  
        setToFirstDay(c);  
        for (int i = 0; i < 7; i++) {  
            String day = printDay(c);  
            lst.add(day);  
            c.add(Calendar.DATE, 1);  
        }  
        return lst.get(6);  
    }  
    public static List<String> getAllweekDays(Date d) {//根据日期来获取其所在周的每一天  
        Calendar c = Calendar.getInstance();  
       List <String>lst=new ArrayList();  
        c.setTime(d);  
        setToFirstDay(c);  
        for (int i = 0; i < 7; i++) {  
            String day = printDay(c);  
            lst.add(day);  
            c.add(Calendar.DATE, 1);  
        }  
        return lst;  
    }  
    public static List<String> getALlweekDays() {  
        List<String>lst=new ArrayList();  
        Calendar calendar = Calendar.getInstance();  
        setToFirstDay(calendar);  
        for (int i = 0; i < 7; i++) {  
            String day=printDay(calendar);  
            lst.add(day);  
            calendar.add(Calendar.DATE, 1);  
        }  
        return lst;  
    }  
   
    private static void setToFirstDay(Calendar calendar) {  
        while (calendar.get(Calendar.DAY_OF_WEEK) != FIRST_DAY) {  
            calendar.add(Calendar.DATE, -1);  
        }  
    }  
   
    private static String  printDay(Calendar calendar) {  
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");  
        return dateFormat.format(calendar.getTime());  
    }  
   
}  


分享到:
评论

相关推荐

    java最全时间工具类,针对年月日周的操作

    java时间操作工具类,已封装好,包含获取某一时间的年,月,日,星期。以及对某一时间进行年,月,日,周的加减。还有获取某一时间年,月,日,周的起始和结束时间等等

    基于Java语言编写的Spring Boot时间工具类方法封装

    基于Java语言编写的Spring Boot时间工具类方法封装,主要方法如下:根据日期获取该日期内24小时的整点时刻、获取当月的 天数、根据 年、月 获取对应的月份 的 天数、根据指定日期得获取对应月份的所有日期的每日结束...

    java 周算法 通过日期得到周信息

    本文将详细介绍一个Java程序中的实用工具类——`WeekUtil`,该类主要用于处理与周相关的各种计算问题,如确定某个日期所在的周数、获取指定周的第一天和最后一天等。这对于需要根据日期进行周统计的应用场景非常有用...

    JAVA输入任意日期可获取当月万年历

    在Java编程语言中,开发一个可以输入任意年月并输出对应月份万年历的功能,是一项常见的日期处理任务。万年历通常是指一种显示特定日期范围内日程和日期信息的工具,这里我们关注的是如何通过纯代码实现,不依赖任何...

    java中队日期的操作

    通过创建一个`Calendar`实例,设置年份和月份,然后将日期设为1,月份加1,再减去一天,即可得到上一月的最后一天。在Java 8及更高版本中,可以使用`YearMonth`类的`lengthOfMonth()`方法更直观地获取。 5. **获取...

    Java 日历 小工具

    这个"Java日历小工具"很可能是开发者为了方便用户查询任意日期而创建的一个实用程序。下面我们将详细探讨Java日历API以及如何利用它来构建这样的小工具。 首先,`java.util.Calendar`是Java标准库中的一个抽象类,...

    java 显示一周各星期的名称

    在Java编程语言中,显示一周各星期的名称涉及到日期和时间处理,这是Java中的一个核心概念。Java提供了`java.time`包,其中包含了一系列类来处理日期、时间和时区。在Java 8及以上版本,我们可以使用`DayOfWeek`枚举...

    Java8时间和日期API20例Java开发Java经验技

    你可以通过 `now()` 方法获取当前日期,或者通过 `of()` 方法指定年、月和日来创建日期。 2. **LocalTime**: 对应于一天中的时间,不包含日期或时区信息。`LocalTime` 提供了获取当前时间、设置小时、分钟和秒的...

    日期处理工具类

    类中可能有`getMondayOfWeek(Date date)`这样的方法,返回给定日期所在周的星期一,或者`getFirstDayOfMonth(Date date)`获取指定日期所在月的第一天。这些功能可以通过计算日期与目标星期或月份起始日期之间的差值...

    Java 日期格式化 工具类

    获取指定年的第几周的最后一天日期 获取指定年的第几周的第一天日期 获取指定日期为当前年的第几周 获取指定日期中的月份 获得当前月的第一天 获得当前月的最后一天 获得月份中的第几天 获取当前时间前2个小时的时间...

    DateFormatUtils时间获取及格式化工具类

    根据指定日期获取上个月日期 计算前推或者后推x月的数据 将年月日时分秒转换为时分秒 获得两个月份之间字符串集合 获取当前时间的前n天(时间格式自定义格式) 将日期字符串转为指定格式的日期字符串

    java时间处理工具类--DateUtils

    * 获取指定时间范围的最后一天 * * @param dateRangeType * 时间范围类型 * @param offset * 偏移量 * @return Date */ public Date getLastDate(int dateRangeType, int offset) { return null...

    根据日期获取当前是星期几

    ### 如何根据日期获取当前是星期几 在日常生活中,我们经常会遇到需要判断某一天具体是星期几的需求,尤其是在编写程序或进行数据处理时。本文将详细介绍如何通过编程语言(以C#为例)实现这一功能。 #### 核心...

    日历查看课程(支持从指定日期开始显示日历)

    标题 "日历查看课程(支持从指定日期开始显示日历)" 暗示了这是一个关于开发具有特定功能的日历视图的应用程序或组件。这个日历不仅展示日期,还能根据用户需求从指定的日期开始展示,这在教育、计划管理或者时间...

    quartz 实现按天、按周、按月定时任务的简单demo

    Quartz 是一个强大的开源作业调度框架,用于在 Java 应用程序中实现复杂的时间调度任务。它允许开发者创建、调度和执行周期性任务,而无需直接处理线程或时间触发器。在这个“quartz 实现按天、按周、按月定时任务的...

    基于Java的实例源码-时间工具包 JTimepiece.zip

    库提供了许多便捷的计算方法,如计算两个日期之间的差距、获取某个日期的下一个或上一个工作日、计算某个月份的天数等,这些都是Java标准库中不易实现的功能。 6. **线程安全**: JTimepiece设计时考虑到了多线程...

    Java 8 日期和时间解读.docx

    Java 8的新API还引入了`TemporalAdjuster`接口,允许进行复杂的日期调整操作,例如获取下一个工作日或上一个星期五。此外,`TemporalAmount`接口用于表示任意时间量,例如`Period`和`Duration`,它们分别用于日期和...

    java写的万年历

    其中,`LocalDate`用于表示不带时区的日期,`YearMonth`用于表示年和月,`DayOfWeek`表示一周中的哪一天,这些都是构建万年历的核心类。通过这些类的组合和方法调用,可以方便地获取任何年份、月份的日历数据。 ...

    java中Calendar类制作日历

    为了创建一个`GregorianCalendar`实例,我们需要指定年、月和日作为参数。例如,在上面的代码片段中,有以下代码行: ```java Calendarrn=newGregorianCalendar(y,m-1,1); ``` 这里,`y`表示年份,`m`表示月份...

    java-时间日历

    此外,`java.time`包下的`TemporalAdjusters`可以用来创建复杂的日期调整器,例如下一个工作日或上个月的第一天。 在编写时间日历小程序时,你可能会实现以下功能: 1. 显示当前日期和时间。 2. 让用户输入年、月、...

Global site tag (gtag.js) - Google Analytics