import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.LinkedHashMap;
/**
* 日期公用处理类
*
* @author SongJun
* @version 1.3
*/
public class DateUtil {
/**
* 解析一个日期之间的所有月份
*
* @param beginDateStr
* @param endDateStr
* @return
*/
public static ArrayList getMonthList(String beginDateStr, String endDateStr) {
// 指定要解析的时间格式
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM");
// 返回的月份列表
String sRet = "";
// 定义一些变量
Date beginDate = null;
Date endDate = null;
GregorianCalendar beginGC = null;
GregorianCalendar endGC = null;
ArrayList list = new ArrayList();
try {
// 将字符串parse成日期
beginDate = f.parse(beginDateStr);
endDate = f.parse(endDateStr);
// 设置日历
beginGC = new GregorianCalendar();
beginGC.setTime(beginDate);
endGC = new GregorianCalendar();
endGC.setTime(endDate);
// 直到两个时间相同
while (beginGC.getTime().compareTo(endGC.getTime()) <= 0) {
sRet = beginGC.get(Calendar.YEAR) + "-"
+ (beginGC.get(Calendar.MONTH) + 1);
list.add(sRet);
// 以月为单位,增加时间
beginGC.add(Calendar.MONTH, 1);
}
return list;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 解析一个日期段之间的所有日期
*
* @param beginDateStr
* 开始日期
* @param endDateStr
* 结束日期
* @return
*/
public static ArrayList getDayList(String beginDateStr, String endDateStr) {
// 指定要解析的时间格式
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
// 定义一些变量
Date beginDate = null;
Date endDate = null;
Calendar beginGC = null;
Calendar endGC = null;
ArrayList list = new ArrayList();
try {
// 将字符串parse成日期
beginDate = f.parse(beginDateStr);
endDate = f.parse(endDateStr);
// 设置日历
beginGC = Calendar.getInstance();
beginGC.setTime(beginDate);
endGC = Calendar.getInstance();
endGC.setTime(endDate);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 直到两个时间相同
while (beginGC.getTime().compareTo(endGC.getTime()) <= 0) {
list.add(sdf.format(beginGC.getTime()));
// 以日为单位,增加时间
beginGC.add(Calendar.DAY_OF_MONTH, 1);
}
return list;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static ArrayList getYearList() {
ArrayList list = new ArrayList();
Calendar c = null;
c = Calendar.getInstance();
c.setTime(new Date());
int currYear = Calendar.getInstance().get(Calendar.YEAR);
int startYear = currYear - 5;
int endYear = currYear + 10;
for (int i = startYear; i < endYear; i++) {
list.add(new Integer(i));
}
return list;
}
public static int getCurrYear() {
return Calendar.getInstance().get(Calendar.YEAR);
}
/**
* 得到某一年周的总数
*
* @param year
* @return
*/
public static LinkedHashMap getWeekList(int year) {
LinkedHashMap map = new LinkedHashMap();
Calendar c = new GregorianCalendar();
c.set(year, Calendar.DECEMBER, 31, 23, 59, 59);
int count = getWeekOfYear(c.getTime());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dayOfWeekStart = "";
String dayOfWeekEnd = "";
for (int i = 1; i <= count; i++) {
dayOfWeekStart = sdf.format(getFirstDayOfWeek(year, i));
dayOfWeekEnd = sdf.format(getLastDayOfWeek(year, i));
map.put(new Integer(i), "第"+i+"周(从"+dayOfWeekStart + "至" + dayOfWeekEnd+")");
}
return map;
}
/**
* 得到一年的总周数
* @param year
* @return
*/
public static int getWeekCountInYear(int year){
Calendar c = new GregorianCalendar();
c.set(year, Calendar.DECEMBER, 31, 23, 59, 59);
int count = getWeekOfYear(c.getTime());
return count;
}
/**
* 取得当前日期是多少周
*
* @param date
* @return
*/
public static int getWeekOfYear(Date date) {
Calendar c = new GregorianCalendar();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.setMinimalDaysInFirstWeek(7);
c.setTime(date);
return c.get(Calendar.WEEK_OF_YEAR);
}
/**
* 得到某年某周的第一天
*
* @param year
* @param week
* @return
*/
public static Date getFirstDayOfWeek(int year, int week) {
Calendar c = new GregorianCalendar();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, Calendar.JANUARY);
c.set(Calendar.DATE, 1);
Calendar cal = (GregorianCalendar) c.clone();
cal.add(Calendar.DATE, week * 7);
return getFirstDayOfWeek(cal.getTime());
}
/**
* 得到某年某周的最后一天
*
* @param year
* @param week
* @return
*/
public static Date getLastDayOfWeek(int year, int week) {
Calendar c = new GregorianCalendar();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, Calendar.JANUARY);
c.set(Calendar.DATE, 1);
Calendar cal = (GregorianCalendar) c.clone();
cal.add(Calendar.DATE, week * 7);
return getLastDayOfWeek(cal.getTime());
}
/**
* 得到某年某月的第一天
* @param year
* @param month
* @return
*/
public static Date getFirestDayOfMonth(int year,int month){
month = month-1;
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
int day = c.getActualMinimum(c.DAY_OF_MONTH);
c.set(Calendar.DAY_OF_MONTH, day);
return c.getTime();
}
/**
* 提到某年某月的最后一天
* @param year
* @param month
* @return
*/
public static Date getLastDayOfMonth(int year,int month){
month = month-1;
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
int day = c.getActualMaximum(c.DAY_OF_MONTH);
c.set(Calendar.DAY_OF_MONTH, day);
return c.getTime();
}
/**
* 取得当前日期所在周的第一天
*
* @param date
* @return
*/
public static Date getFirstDayOfWeek(Date date) {
Calendar c = new GregorianCalendar();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // Monday
return c.getTime();
}
/**
* 取得当前日期所在周的最后一天
*
* @param date
* @return
*/
public static Date getLastDayOfWeek(Date date) {
Calendar c = new GregorianCalendar();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday
return c.getTime();
}
}
分享到:
相关推荐
6. **时间类**:Java 8引入了新的日期和时间API(java.time包),它提供了更直观、更易于使用的日期、时间、时区处理功能,替代了之前的java.util.Calendar和java.util.Date。 7. **数据库连接池**:例如,C3P0、...
common.java 一个公用类 derive.java 一个测试用子类 differ.java 测试静态方法与实例方法之间的区别 forefather.java 一个简单的基类 grandson.java 上面这个类的子类 hasConstructor.java 拥有构造器的类 ...
在开发的过程中,我们需要一些工具类实现某些特殊处理,例如字符串格式处理,日期处理,文件处理等操作。如果在传统的开发过程中,我们将自己开发一些工具类用于实现这些功能。但自己开发可能就会在不经意间由于代码...
2. **日期处理**:Java的日期时间处理主要包括`java.util.Date`、`java.time`包(Java 8及以上版本)和Joda-Time库。这些API用于获取当前日期、时间,进行日期计算,格式化和解析日期字符串等操作。例如,`...
1. **Java工具类库**: 在Java开发中,工具类库通常是一系列静态方法集合,提供了各种通用功能,如字符串操作、日期时间处理、数学计算、IO操作等。Watson项目可能包含了这些常见的工具类,帮助开发者快速实现常见...
177个JAR文件的汇总意味着这个集合覆盖了大量的常用库和组件,包括但不限于网络通信、数据解析、日期时间处理、加密解密、国际化支持等。开发者可以根据实际需求,选择相应的JAR包引入到项目中,大大提高了开发效率...
例如,数据库连接池(如C3P0、Apache DBCP)、加密解密工具(如AES、RSA)、日期时间处理库(如Java 8的java.time包)等。 博客系统则关注于内容发布、用户互动和信息分享,可能需要公用JAR2中的模板引擎(如...
- **UtilityObjects的使用**:UtilityObjects是ADF中用于封装公用功能的对象,如日期处理、字符串操作等。合理利用UtilityObjects,可以显著提高应用程序的开发效率和代码质量。 #### 结语 ArcGIS Server Java ADF...
6.2Java的异常处理机制221 6.3异常类的层次结构222 6.3.1运行时异常222 6.3.2检查型异常223 6.3.3自定义异常224 6.4捕获和处理异常224 6.5抛出异常228 6.6try-catch-finally语句的嵌套231 6.7用户自定义异常...
3. **DateUtils**: 日期和时间操作的工具类,提供了格式化日期、比较日期、解析日期等功能,使得日期处理更为便捷。 4. **FileUtils**: 文件操作类,包括创建、删除、移动、重命名文件,以及目录操作,有助于简化...
- **public** ['pʌblik]:表示“公共的”或“公用的”,在 Java 中用于修饰类、方法或变量,表明它们可以被任何其他类访问。 - **static** ['stætik]:意为“静的”、“静态的”或“静止的”,用来修饰类、方法或...
新版本的IK Analyzer 3.0则发展为面向Java的公用分词组件,独立于Lucene项目,同时提 供了对Lucene的默认优化实现。 采用了特有的“正向迭代最细粒度切分算法“,具有80万字/秒的高速处理能力 采用了多子处理器...
在项目开始前,明确每个人的职责,确保公用资源的统一管理,可以提高效率并减少冲突。作为组长,不仅要完成个人任务,还需要协调团队合作,确保项目的顺利进行。 2. **功能设计与测试心得** - **登录功能**:登录...
首步我们一般在程序中先处理我们完成异常处理的类,完成异常处理的功能,因为可能除数为0是会出现异常,我们查找java.lang包中各个Exception类,发现RuntimeException类集合中的ArithmeticException可以处理运算异常...
2. **日期时间处理**:Java 8引入了新的日期和时间API,但仍然有许多开发者使用旧的`java.util.Date`和`java.text.SimpleDateFormat`。个人工具包可能封装了这些API,提供易用的日期时间格式化和计算方法。 3. **...
新版本的IKAnalyzer3.0则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。 IKAnalyzer3.0特性: 采用了特有的“正向迭代最细粒度切分算法“,具有60万字/秒的高速处理能力...
在描述中提到的"公用类1",可能是指一个通用的工具类,包含了一系列常用的方法,例如字符串处理、日期时间操作、数学计算等,供开发者在编写代码时调用。这样的类通常被设计成可以复用的,以提高代码的可维护性和...
新版本的IKAnalyzer3.0则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。 IKAnalyzer3.0特性: 采用了特有的“正向迭代最细粒度切分算法“,具有60万字/秒的高速处理能力。...
新版本的IKAnalyzer3.0 则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。 1.2IKAnalyzer3.0特性 * 采用了特有的“正向迭代最细粒度切分算法“,具有50万字/秒的高速处理...
3. **日期和时间处理**:Java提供`java.time`包,包含`LocalDateTime`, `Duration`等类,可以用来处理日期、时间以及时间间隔,如计算飞行时间。例如,用户可能输入出发时间和到达时间,程序将两者相减得到飞行时间...