最近的项目老用到不同的时间操作方法,看了半天文档,整理了一个基本工具类,应该能满足一般开发的需要了,罗列如下:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CommonTool {
public static SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
public static SimpleDateFormat format1 = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
/**
* 得到返回指定日期是星期几(1为周日;2为周一;依次类推)
* @param date
* @return
*/
public static int getDateWeekDay(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.DAY_OF_WEEK);
}
/**
* 获取当前自然年后的amount年的第一天的开始时间
* @param amount 可正、可负
* @return
*/
public static Date getSpecficYearStart(int amount){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.YEAR, amount);
cal.set(Calendar.DAY_OF_YEAR, 1);
return getStartDate(cal.getTime());
}
/**
* 获取当前自然年后的amount年的最后一天的终止时间
* @param amount 可正、可负
* @return
*/
public static Date getSpecficYearEnd(int amount){
Date temp = getStartDate(getSpecficYearStart(amount + 1));
Calendar cal = Calendar.getInstance();
cal.setTime(temp);
cal.add(Calendar.DAY_OF_YEAR, -1);
return getFinallyDate(cal.getTime());
}
/**
* 返回日期所在年份中的天数(1--366)
* @param date
* @return
*/
public static int getYearDay(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.YEAR, 1);
cal.set(Calendar.DAY_OF_YEAR, 1);
cal.add(Calendar.DAY_OF_YEAR, -1);
SimpleDateFormat format1 = new SimpleDateFormat("D");
String aa = format1.format(cal.getTime());
return Integer.parseInt(aa);
}
/**
* 获取当前自然月后的amount月的第一天的开始时间
* @param amount 可正、可负
* @return
*/
public static Date getSpecficMonthStart(int amount){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, amount);
cal.set(Calendar.DAY_OF_MONTH, 1);
return getStartDate(cal.getTime());
}
/**
* 获取当前自然月后的amount月的最后一天的终止时间
* @param amount 可正、可负
* @return
*/
public static Date getSpecficMonthEnd(int amount){
Calendar cal = Calendar.getInstance();
cal.setTime(getSpecficMonthStart(amount + 1));
cal.add(Calendar.DAY_OF_YEAR, -1);
return getFinallyDate(cal.getTime());
}
/**
* 返回日期所在月份中的天数(1--31)
* @param date
* @return
*/
public static int getMonthDay(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, 1);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.add(Calendar.DAY_OF_YEAR, -1);
SimpleDateFormat format1 = new SimpleDateFormat("d");
String aa = format1.format(cal.getTime());
return Integer.parseInt(aa);
}
/**
* 获取当前自然周后的第amount周的开始时间(这里星期一为一周的开始)
* @param amount 可正、可负
* @return
*/
public static Date getSpecficWeekStart(int amount){
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY); /*设置一周的第一天为星期一*/
cal.add(Calendar.WEEK_OF_MONTH, amount);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
return getStartDate(cal.getTime());
}
/**
* 获取当前自然周后的第amount周的最后时间(这里星期日为一周的最后一天)
* @param amount 可正、可负
* @return
*/
public static Date getSpecficWeekEnd(int amount){
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY); /*设置一周的第一天为星期一*/
cal.add(Calendar.WEEK_OF_MONTH, amount);
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
return getFinallyDate(cal.getTime());
}
/**
* 得到指定日期的一天的的最后时刻23:59:59
* @param date
* @return
*/
public static Date getFinallyDate(Date date){
String temp = format.format(date);
temp += " 23:59:59";
try{
return format1.parse(temp);
}
catch(ParseException e){
return null;
}
}
/**
* 得到指定日期的一天的开始时刻00:00:00
* @param date
* @return
*/
public static Date getStartDate(Date date){
String temp = format.format(date);
temp += " 00:00:00";
try{
return format1.parse(temp);
}
catch(Exception e){
CPDLogDebug.printError(e, null);
return null;
}
}
/**
* 得到当前时间后的指定天数的时间
* @param amount 天数(可正、可负)
* @return
*/
public static Date getSpecficDate(int amount){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_YEAR, amount);
return cal.getTime();
}
/**
* 根据参照日期,得到其周边天数的日期
* @param date
* @param amount
* @return
*/
public static Date getSpecficDate(Date date, int amount){
if(date == null) return getSpecficDate(amount);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DAY_OF_YEAR, amount);
return cal.getTime();
}
}
分享到:
相关推荐
【JAVA内置对象大全,各类使用方法大全】 在Java编程语言中,内置对象是指由Java标准库提供的、无需程序员显式创建的对象。这些对象通常与语言的底层机制紧密关联,提供了许多核心功能。本文将主要讨论JavaScript中...
9. **日期和时间**:`java.time`包是Java 8引入的新特性,包含`LocalDate`、`LocalTime`、`LocalDateTime`等类,提供了更强大、更易用的日期时间操作。 10. **反射**:`java.lang.reflect`包提供了反射API,允许在...
java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类...
- 冒泡排序:最简单的排序方法,适用于小规模数据或教学演示。 - 选择排序:通过交换找到最小(大)元素的位置进行排序。 - 插入排序:适合于部分有序的数据,对于大规模数据效率较低。 - 快速排序:分治策略,...
在Java中,可以使用ArrayDeque或LinkedList实现队列,提供enqueue(入队)和dequeue(出队)操作。 4. **二叉树**:二叉树是一种每个节点最多有两个子节点的数据结构。常见的有二叉搜索树(BST),其中左子节点的值...
### Java中各类Cache机制实现解决方案 #### 一、概述 在现代软件开发中,缓存技术是提升系统性能的关键手段之一。通过缓存频繁访问的数据,可以显著减少对后端数据库的压力,从而提高应用程序的响应速度和用户体验...
这些数据结构提供了丰富的操作方法,如添加、删除、查找和遍历元素。理解它们的特点和使用场景,以及高级特性如泛型、迭代器和流API,能帮助我们写出更高效、更安全的代码。 在Java API中,还包含了丰富的`基础类库...
java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类。...
这些文档不仅提供技术规格,还包含使用示例,帮助程序员理解和应用Java的各类功能。 1. **类和接口**: Java API文档包含了Java类库中的大量类和接口,例如`java.lang`包下的基本类如`String`、`Integer`,以及`...
7. **多线程**:Java支持多线程编程,使得程序可以在同一时间执行多个任务。你需要学习如何创建线程(Thread类或Runnable接口),理解线程同步(synchronized关键字,wait(), notify()方法)以及并发工具类(如...
java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类。...
3. **时间和空间上的优势**:在多数比赛中,使用Java编写的程序通常会被给予更多的运行时间和内存空间。虽然Java在执行计算密集型任务时的速度与C/C++相差无几,但在处理输入输出(I/O)操作时速度相对较慢。 4. **...
文中提到了数据结构(Data Structures)和Java语言的结合,这表明文档可能涉及数据结构在Java中的实现方式,包括基本的结构如数组、链表、栈、队列、树和图等,以及它们的特性、操作方法和应用场景。 2. Java中的...
- **Calendar**:更高级的日期和时间操作类,提供了对日期和时间更精细的控制。 - **Random**:用于生成各种类型的随机数。 - **Vector**:实现了动态数组的功能,线程安全。 - **Stack**:基于Vector实现的后进先出...
Java语言作为面向对象编程语言的典型代表,涵盖了丰富的编程概念和术语,本文将依据给定文件内容,...以上概念覆盖了Java编程语言的核心知识点,通过这些知识点的学习,可以深入理解和应用Java语言开发各类应用程序。
- **主要功能**:包括集合类、时间处理模式、日期时间工具等各类常用工具包。 - **关键类**: - `List` 和 `Set`:集合接口。 - `HashMap` 和 `HashSet`:基于哈希表的集合实现。 - `Date` 和 `Calendar`:用于...
在IT行业中,Java是一种广泛应用的编程语言,尤其在企业级应用开发中占据着主导地位。...通过这样的系统,教育从业者能够快速高效地创建和管理各类考试试卷,体现了Java在教育技术领域的应用潜力。
5. **日期与时间API**:Java 8对日期和时间处理进行了重构,引入了新的java.time包,包含了LocalDate、LocalTime、LocalDateTime等类,提供了更强大和易用的时间日期操作。 6. **并发编程**:Java API包含了丰富的...
Java源码是编程语言Java的基础,它包含了程序员用Java编写的各类代码文件。这些源码文件通常使用.java作为扩展名,由Java开发工具包(JDK)中的编译器进行编译,转换成计算机可执行的字节码(.class文件),然后由...