`
jizhan
  • 浏览: 31723 次
  • 性别: Icon_minigender_1
  • 来自: ~~
文章分类
社区版块
存档分类
最新评论

JAVA各类时间操作方法

阅读更多

最近的项目老用到不同的时间操作方法,看了半天文档,整理了一个基本工具类,应该能满足一般开发的需要了,罗列如下:


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编程语言中,内置对象是指由Java标准库提供的、无需程序员显式创建的对象。这些对象通常与语言的底层机制紧密关联,提供了许多核心功能。本文将主要讨论JavaScript中...

    java各类帮助文档

    9. **日期和时间**:`java.time`包是Java 8引入的新特性,包含`LocalDate`、`LocalTime`、`LocalDateTime`等类,提供了更强大、更易用的日期时间操作。 10. **反射**:`java.lang.reflect`包提供了反射API,允许在...

    JAVA_API1.6文档(中文)

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类...

    java 各类算法实现代码

    - 冒泡排序:最简单的排序方法,适用于小规模数据或教学演示。 - 选择排序:通过交换找到最小(大)元素的位置进行排序。 - 插入排序:适合于部分有序的数据,对于大规模数据效率较低。 - 快速排序:分治策略,...

    基于java各类数据结构的实现和各种排序

    在Java中,可以使用ArrayDeque或LinkedList实现队列,提供enqueue(入队)和dequeue(出队)操作。 4. **二叉树**:二叉树是一种每个节点最多有两个子节点的数据结构。常见的有二叉搜索树(BST),其中左子节点的值...

    Java中各类Cache机制实现解决方案

    ### Java中各类Cache机制实现解决方案 #### 一、概述 在现代软件开发中,缓存技术是提升系统性能的关键手段之一。通过缓存频繁访问的数据,可以显著减少对后端数据库的压力,从而提高应用程序的响应速度和用户体验...

    Java相关技术api

    这些数据结构提供了丰富的操作方法,如添加、删除、查找和遍历元素。理解它们的特点和使用场景,以及高级特性如泛型、迭代器和流API,能帮助我们写出更高效、更安全的代码。 在Java API中,还包含了丰富的`基础类库...

    java api最新7.0

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类。...

    Java API文档.docx

    这些文档不仅提供技术规格,还包含使用示例,帮助程序员理解和应用Java的各类功能。 1. **类和接口**: Java API文档包含了Java类库中的大量类和接口,例如`java.lang`包下的基本类如`String`、`Integer`,以及`...

    与java有关的各类源代码

    7. **多线程**:Java支持多线程编程,使得程序可以在同一时间执行多个任务。你需要学习如何创建线程(Thread类或Runnable接口),理解线程同步(synchronized关键字,wait(), notify()方法)以及并发工具类(如...

    Java 1.6 API 中文 New

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类。...

    ACM中常用Java的介绍

    3. **时间和空间上的优势**:在多数比赛中,使用Java编写的程序通常会被给予更多的运行时间和内存空间。虽然Java在执行计算密集型任务时的速度与C/C++相差无几,但在处理输入输出(I/O)操作时速度相对较慢。 4. **...

    JAVA版数据结构.pdf

    文中提到了数据结构(Data Structures)和Java语言的结合,这表明文档可能涉及数据结构在Java中的实现方式,包括基本的结构如数组、链表、栈、队列、树和图等,以及它们的特性、操作方法和应用场景。 2. Java中的...

    java常用类库手册

    - **Calendar**:更高级的日期和时间操作类,提供了对日期和时间更精细的控制。 - **Random**:用于生成各种类型的随机数。 - **Vector**:实现了动态数组的功能,线程安全。 - **Stack**:基于Vector实现的后进先出...

    Java语言常用的方法名.pdf

    Java语言作为面向对象编程语言的典型代表,涵盖了丰富的编程概念和术语,本文将依据给定文件内容,...以上概念覆盖了Java编程语言的核心知识点,通过这些知识点的学习,可以深入理解和应用Java语言开发各类应用程序。

    Java类库 java中常用的类 可以参考

    - **主要功能**:包括集合类、时间处理模式、日期时间工具等各类常用工具包。 - **关键类**: - `List` 和 `Set`:集合接口。 - `HashMap` 和 `HashSet`:基于哈希表的集合实现。 - `Date` 和 `Calendar`:用于...

    JAVA ITEXT 导出试卷

    在IT行业中,Java是一种广泛应用的编程语言,尤其在企业级应用开发中占据着主导地位。...通过这样的系统,教育从业者能够快速高效地创建和管理各类考试试卷,体现了Java在教育技术领域的应用潜力。

    java 1.8中文api文档 2018

    5. **日期与时间API**:Java 8对日期和时间处理进行了重构,引入了新的java.time包,包含了LocalDate、LocalTime、LocalDateTime等类,提供了更强大和易用的时间日期操作。 6. **并发编程**:Java API包含了丰富的...

    java source

    Java源码是编程语言Java的基础,它包含了程序员用Java编写的各类代码文件。这些源码文件通常使用.java作为扩展名,由Java开发工具包(JDK)中的编译器进行编译,转换成计算机可执行的字节码(.class文件),然后由...

Global site tag (gtag.js) - Google Analytics