CalendarUtil.java

  1 package com.honghailt.dataextracter.utils;
  2
  3 import java.text.ParseException;
  4 import java.text.SimpleDateFormat;
  5 import java.util.ArrayList;
  6 import java.util.Calendar;
  7 import java.util.Date;
  8 import java.util.List;
  9
 10 public  class CalendarUtil {
 11
 12     //下月第一天
 13     public static Date getNextMonth(Date beginTime) {
 14         Calendar c = Calendar.getInstance();
 15         c.setTime(beginTime);
 16         c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 1);
 17         c.set(Calendar.DAY_OF_MONTH, 1);
 18         return c.getTime();
 19     }
 20
 21     //当天几号
 22     public static int getMonthOfDate(Date date) {
 23         Calendar c = Calendar.getInstance();
 24         c.setTime(date);
 25         return c.get(Calendar.DAY_OF_MONTH);
 26     }
 27     //当月有多少天
 28     public static int getLastDayOfMonth(Date date) {
 29         Calendar c = Calendar.getInstance();
 30         c.setTime(date);
 31         int month = c.getActualMaximum(Calendar.DATE);
 32         return month;
 33     }
 34
 35     //当前月 -1
 36     public static int getMonth(Date date) {
 37         Calendar c = Calendar.getInstance();
 38         c.setTime(date);
 39         int month = c.get(Calendar.MONTH);
 40         return month;
 41     }
 42
 43     //当月第一天
 44       public static Date getFirstDayOfMonth(Date beginTime){
 45            Calendar c = Calendar.getInstance();
 46            c.setTime(beginTime);
 47            c.set(Calendar.DAY_OF_MONTH, 1);
 48            return c.getTime();
 49       }
 50
 51     //获得当周第几天  i=0表示星期一
 52     public static String getNowWeekBegin(Date date,int i) {
 53         Calendar cd = Calendar.getInstance();
 54         cd.setTime(date);
 55         cd.set(Calendar.DAY_OF_WEEK, Calendar.MONTH +i);
 56         if(i==6){
 57          cd.set(Calendar.DAY_OF_WEEK, Calendar.MONTH+5);
 58          cd.add(cd.DATE, 1);
 59         }
 60         Date  monday =cd.getTime();
 61         SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
 62         String preMonday = df.format(monday);
 63         return preMonday ;
 64         }
 65
 66     //获得当周第几天,返回日期形。i=0表示星期一
 67     public static Date getNowWeekBeginDate(Date date,int i) {
 68         Calendar cd = Calendar.getInstance();
 69         cd.setTime(date);
 70         cd.set(Calendar.DAY_OF_WEEK, Calendar.MONTH +i);
 71         if(i==6){
 72          cd.set(Calendar.DAY_OF_WEEK, Calendar.MONTH+5);
 73          cd.add(cd.DATE, 1);
 74         }
 75         Date  monday =cd.getTime();
 76         return monday ;
 77         }
 78     //获得本周日期
 79     public static List<String> getDaysOfWeek(Date date){
 80         List<String> days = new ArrayList<String>();
 81         for (int i = 0; i < 7; i++) {
 82             days.add(getNowWeekBegin(date,i));
 83         }
 84         return days;
 85     }
 86     //获得本周日期
 87     public static List<Date> getDaysOfWeekDate(Date date){
 88         List<Date> days = new ArrayList<Date>();
 89         for (int i = 0; i < 7; i++) {
 90             days.add(getNowWeekBeginDate(date,i));
 91         }
 92         return days;
 93     }
 94
 95     /**
 96      * 获得当月第几周
 97      * @param date
 98      * @param week
 99      * @return
100      */
101     public static List<String> getWeeksOfMonth(Date date,int week){
102         int day =7*week+1;
103         Calendar c = Calendar.getInstance();
104         c.setTime(date);
105         c.set(Calendar.DAY_OF_MONTH, day);
106         return getDaysOfWeek(c.getTime());
107     }
108
109     //本月最后一天
110     public static Date getDateOfLastDayOfMonth(Date date){
111         Calendar c = Calendar.getInstance();
112         c.setTime(date);
113         c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DATE));
114         return c.getTime();
115     }
116     //获得本月第几天,0表示第一天
117    public static Date getDayOfMonth(Date date,int i){
118        Calendar c = Calendar.getInstance();
119            c.setTime(date);
120            c.set(Calendar.DAY_OF_MONTH, i+1);
121        return c.getTime();
122    }
123     //本月共几周
124     public static int getWeekyofMonth(Date date){
125         Date d1 = getFirstDayOfMonth(date);//第一天
126         Date d2 = getDateOfLastDayOfMonth(date);//最后一天
127         Date mon1 =getNowWeekBeginDate(d1,0);//第一天所在周星期一
128         Date mon2 =getNowWeekBeginDate(d2,0);//最后一天所在周星期一
129         return (int) ((mon2.getTime()-mon1.getTime())/3600/24/1000)/7;
130     }
131    public static List<String> getWeekName(){
132        List<String> list = new ArrayList<String>();
133        list.add("周一");
134        list.add("周二");
135        list.add("周三");
136        list.add("周四");
137        list.add("周五");
138        list.add("周六");
139        list.add("周日");
140        return list;
141
142    }
143    /**
144     * 首先获得 定一个时间,就2014-07-14为单周
145     * 然后获得传过来日期的星期一与这个时间除以7.
146     * 然后结果除以2,如果余数是0,这是单周,否则是双周
147     * @param date
148     * @return
149     */
150  public static String getDanShuangWeek(Date date){
151     Date beginDate =StringToDate("2014-07-14");
152     Date nowDate =getNowWeekBeginDate(date,0);
153     int temp = (int) ((nowDate.getTime() -beginDate.getTime())/3600/24/1000);
154     int danshuang=temp%2;
155     String str=null;
156     if(danshuang==0){
157         str="单周";
158     }else{
159         str="双周";
160     }
161      return str;
162  }
163
164  public static int getDanShuangWeekInt(Date date){
165         Date beginDate =StringToDate("2014-07-14");
166
167         Date nowDate =getNowWeekBeginDate(date,0);
168         int temp = (int) ((nowDate.getTime() -beginDate.getTime())/3600/24/1000);
169         int danshuang=temp%2;
170          return danshuang;
171      }
172
173  public static Date StringToDate(String strDate){
174      SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
175      Date date =null;
176      try {
177           date = df.parse(strDate);
178     } catch (ParseException e) {
179         // TODO Auto-generated catch block
180         e.printStackTrace();
181     }
182      return date;
183  }
184
185  public static Date DateToDate(Date date){
186      SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
187      String strDate= df.format(date);
188      return StringToDate(strDate);
189  }
190
191  public static void main(String[] args) {
192 //    System.out.println(getDanShuangWeek(StringToDate("2014-08-02"))); ;
193     // System.out.println(getDayOfMonth(new Date(),10));
194      System.out.println(DateToDate(new Date()));
195 }
196 }

CalendarUtil.java

时间: 2024-12-29 23:03:06

CalendarUtil.java的相关文章

黑马程序员--Java基础学习笔记【正则表达式、常用API】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 正则表达式 正则表达式的组成规则 java.util.regex.Pattern 常见组成规则 字符集合 [abc] a.b.c中任意一个字符 [^abc] 除了a.b.c的任意字符 [a-z] a-z中的任意一个字符 [a-zA-Z0-9] a-z.A-Z.0-9中任意一个字符 [a-z&&[^bc]] a-z中除了b和c以外的任意一个字符 预定义字符集 .任意一个字符 \d 任意一个

java项目中redis的配置好工具方法

配置文件对redis的配置: #REDIS_CONFIG redis.sentinels = x.x.x.x:p,x.x.x.x:p,x.x.x.x:p redis.sentinel.master = redis-master redis.password = password redispool.maxtotal = 6000 redispool.maxidle = 300 redispool.maxwaitmillis = 10000 redispool.timeout = 100 #red

Java多线程学习(吐血超详细总结)

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 目录(?)[-] 一扩展javalangThread类 二实现javalangRunnable接口 三Thread和Runnable的区别 四线程状态转换 五线程调度 六常用函数说明 使用方式 为什么要用join方法 七常见线程名词解释 八线程同步 九线程数据传递 本文主要讲了java中多线程的使用方法.线程同步.线程数据传递.线程状态及相应的一些线程函数用法.概述等. 首先讲一下进程和线程

Java TM 已被阻止,因为它已过时需要更新的解决方法

公司的堡垒机需要通过浏览器登陆,且该堡垒机的网站需要Java的支持,最近通过浏览器登陆之后总是提示"java TM 已被阻止,因为它已过时需要更新的解决方法"导致登陆之后不能操作, 但是操作系统中确实已经安装了比较新的JDK,安装的JDK版本是jdk-7u67-windows-i586,因为太烦人,所以决定搞清楚报错的原因,一劳永逸,彻底解决这个问题 准备工作:安装JDK,安装版本jdk-7u67-windows-i586.exe,因为机器的Eclipse还依赖64位的JDK,所以另安

Java四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor

介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? Java new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start(); 1 2 3 4 5 6 7 new Thread(new

由@NotNull 注解引出的关于Java空指针的控制(转)

Java 小技巧和在java应用避免NullPonintException的最佳方法 在java应用程序中,一个NullPonintException(空指针异常)是最好解决(问题)的方法.同时,空指针也是写健壮的顺畅运行的代码的关键.“预防好过治疗”这句话也同样适用于令人不爽的NullPonintException.通过应用防御性的编码技术和在遵守多个部分之间的约定,你可以再很大程度上避免NullPointException.下面的这些java小技巧可以最小化像!=null这种检查的代码.作为

Java注解(2)-注解处理器(运行时|RetentionPolicy.RUNTIME)

如果没有用来读取注解的工具,那注解将基本没有任何作用,它也不会比注释更有用.读取注解的工具叫作注解处理器.Java提供了两种方式来处理注解:第一种是利用运行时反射机制:另一种是使用Java提供的API来处理编译期的注解. 反射机制方式的注解处理器 仅当定义的注解的@Retention为RUNTIME时,才能够通过运行时的反射机制来处理注解.下面结合例子来说明这种方式的处理方法. Java中的反射API(如java.lang.Class.java.lang.reflect.Field等)都实现了接

jvm系列(一):java类的加载机制

java类的加载机制 原文:http://www.cnblogs.com/ityouknow/p/5603287.html 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构.类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口. 类加载器并不需要等到某个

Java注解(1)-注解基础

注解(Annotation)是在JAVA5中开始引入的,它为在代码中添加信息提供了一种新的方式.注解在一定程度上把元数据与源代码文件结合在一起,正如许多成熟的框架(Spring)所做的那样.那么,注解到底可以做什么呢? 1.注解的作用. 提供用来完整地描述程序所需要的信息,如编译期校验程序信息. 生成描述符文件,或生成新类的定义. 减轻编写"样板"代码(配置文件)的负担,可以使用注解自动生成. 更加干净易读的代码. 编译期类型检查. 2.Java提供的注解 Java5内置了一些原生的注