`
sandy_leen
  • 浏览: 72135 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Java中对日期的常用处理(转)

阅读更多
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/** *//**
 * 
 * @author zzk
 *
 */
public class DateUtil {

    /** *//**
     * 取得某天相加(减)後的那一天
     * 
     * @param date
     * @param num(可正可负)
     * @return
     */
    public static Date getAnotherDate(Date date, int num) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.add(Calendar.DAY_OF_YEAR, num);
        return c.getTime();
    }

    /** *//**
     * 取得某月的的最后一天
     * 
     * @param year
     * @param month
     * @return
     */
    public static Date getLastDayOfMonth(int year, int month) {
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, year);// 年
		cal.set(Calendar.MONTH, month - 1);// 月,因为Calendar里的月是从0开始,所以要减1
		//设置该月实际的最后一天
		cal.set(Calendar.DATE,cal.getActualMaximum(Calendar.DATE));
		return cal.getTime();// 获得月末是几号 
    }
 
     /** *//**
      * 取得某天是一年中的多少周
     * 
     * @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 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());
        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);
        return c.getTime();
    }

    /** *//**
     * 取得某一年共有多少周
     * 
     * @param year
     * @return
     */
    public static int getMaxWeekNumOfYear(int year) {
        Calendar c = new GregorianCalendar();
        c.set(year, Calendar.DECEMBER, 31, 23, 59, 59);
        return getWeekOfYear(c.getTime());
    }
    
    /** *//**
     * 取得某年某周的第一天
     * 对于交叉:2008-12-29到2009-01-04属于2008年的最后一周,2009-01-05为2009年第一周的第一天
     * @param year
     * @param week
     * @return
     */
    public static Date getFirstDayOfWeek(int year, int week) {
        Calendar calFirst = Calendar.getInstance();
        calFirst.set(year, 0, 7);
        Date firstDate = getFirstDayOfWeek(calFirst.getTime());

        Calendar firstDateCal = Calendar.getInstance();
        firstDateCal.setTime(firstDate);

        Calendar c = new GregorianCalendar();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, Calendar.JANUARY);
        c.set(Calendar.DATE, firstDateCal.get(Calendar.DATE));

        Calendar cal = (GregorianCalendar) c.clone();
        cal.add(Calendar.DATE, (week - 1) * 7);
        firstDate = getFirstDayOfWeek(cal.getTime());

        return firstDate;
    }

    /** *//**
     * 取得某年某周的最后一天
     * 对于交叉:2008-12-29到2009-01-04属于2008年的最后一周,2009-01-04为2008年最后一周的最后一天
     * @param year
     * @param week
     * @return
     */
    public static Date getLastDayOfWeek(int year, int week) {
        Calendar calLast = Calendar.getInstance();
        calLast.set(year, 0, 7);
        Date firstDate = getLastDayOfWeek(calLast.getTime());

        Calendar firstDateCal = Calendar.getInstance();
       firstDateCal.setTime(firstDate);

        Calendar c = new GregorianCalendar();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, Calendar.JANUARY);
        c.set(Calendar.DATE, firstDateCal.get(Calendar.DATE));

        Calendar cal = (GregorianCalendar) c.clone();
        cal.add(Calendar.DATE, (week - 1) * 7);
        Date lastDate = getLastDayOfWeek(cal.getTime());
        
        return lastDate;
    }
}
分享到:
评论

相关推荐

    java中的日期处理类总结

    Java中的日期处理涉及到多个类,包括Date、Calendar、GregorianCalendar以及日期格式化类如DateFormat和SimpleDateFormat。这些类主要用于管理、操作和格式化日期和时间。以下是对这些类的详细说明: 1. **Date类**...

    JAVA处理日期时间常用方法

    Java中的日期和时间处理是程序开发中常见的任务,涉及到各种日期和时间的计算、格式化以及比较等操作。在Java中,主要使用`java.util.Date`、`java.util.Calendar`和`java.text.SimpleDateFormat`这三个核心类来处理...

    Java中日期处理的代码

    通过以上分析可以看出,示例代码涵盖了 Java 日期处理的基本功能,包括日期格式的定义、日期与字符串之间的转换以及对日期进行操作的方法。这些知识点对于开发人员来说是非常实用的,能够帮助他们在实际项目中高效地...

    Java常用日期辅助类

    在给定的标题“Java常用日期辅助类”中,我们可以推测这篇博文可能探讨了Java中的一些核心日期处理工具,如`java.util.Date`,`java.time`包中的类,以及自定义的日期助手类`DateHelper.java`。 `java.util.Date`是...

    Java日期常用操作方法工具类

    本文将重点讲解Java日期的常用操作方法,主要基于提供的`JavaDateUtil.java`文件,假设这是一个自定义的日期工具类。 首先,我们来了解`java.util.Date`。这个类在早期的Java版本中被广泛使用,但它的API设计并不...

    Java的日期格式化常用方法

    在Java编程语言中,处理日期和时间是常见的需求。`java.time`包提供了丰富的API来完成日期和时间的格式化、解析以及计算等任务。本文将深入探讨Java中日期格式化的常用方法,主要关注`SimpleDateFormat`和`java.time...

    java swing 时间日期选择控件

    标签“java日期控件”强调了这个主题关注的是Java中与日期选择相关的控件,不仅仅是Swing,也可能是JavaFX或其他库提供的日期选择组件。但在这里,我们主要讨论的是Swing环境下的实现。 在压缩包的"swing 时间控件...

    java常用的工具类整理28个

    在Java编程语言中,工具类(Utility Class)是包含各种静态方法的类,这些方法用于执行特定任务,如数据操作、文件处理、数学计算等。它们通常不包含实例变量,只提供静态方法服务,帮助开发者提高代码的复用性和...

    常用代码:java日期处理

    这篇博客"常用代码:java日期处理"很可能包含了关于如何在Java中有效地处理日期的实用示例和方法。这里我们将深入探讨Java日期处理的核心概念、API和最佳实践。 1. **Java日期API的发展历程** - Java 1.0引入了`...

    java日期处理小结

    总的来说,Java中的日期处理涉及对`Date`和`Calendar`对象的操作,它们提供了丰富的功能,如获取、设置日期和时间字段,以及比较和格式化日期。在实际编程中,理解并熟练运用这些类和方法对于处理日期相关的逻辑至关...

    时间处理常用java

    根据给定的信息,本文将详细解释Java中时间处理的一些常用方法和技术点,这些技术点主要集中在日期和时间的创建、转换、格式化以及日期之间的计算等方面。 ### 一、使用Calendar进行日期操作 #### 1. 设置特定日期...

    最全Java常用日期处理工具类

    2014" 专门用于处理springboard定时任务修改cron参数的日期处理方法 12.获取本月第一天(月初时间) 13.获取本月最后一天(月底时间) 以上这些方法都在该Java工具类,当然不仅仅包含这些,还有其他的很多。

    Android-Java中的日期转化格式DateUtil工具类

    `DateUtil`工具类通常包含了对日期进行格式化、解析、比较等常用功能,使得在Android项目中处理日期变得更加便捷。 在Java中,日期对象主要由`java.util.Date`类表示,而日期格式化则依赖于`java.text....

    日期时间处理类需要处理的时间和日期的转换

    在Java中,日期时间处理类的情况有所不同。Java 8之前,主要使用`java.util.Date`和`java.text.SimpleDateFormat`进行日期时间的处理,但这两个类的设计被认为不够理想。自Java 8起,引入了`java.time`包,其中包括`...

    java 时间格式转换及常用时间处理

    ### Java时间格式转换及常用时间处理 在Java开发过程中,日期和时间的处理是一项非常常见的需求,尤其是在涉及数据展示、数据库交互以及业务逻辑处理时。本文将详细介绍如何在Java中进行时间格式的转换,并提供一些...

    Java的日期时间处理类讲解代码( Date 、Calendar、SimpleDateFormat、LocalDateTime)

    2、时区处理:了解如何使用Java日期时间类处理多时区的情况,包括转换、调整时差、比较等操作。 3、计划任务与调度:学习如何使用日期时间类来实现计划任务和调度功能,例如定时执行任务、定期触发事件等。 4、日历...

    java中的日期处理类总结:DateCalendarGregorianCalendarDateFormatSimpleDateFormat类

    为了更好地理解和使用Java中的日期处理类,本篇文章将对Date、Calendar(包括其子类GregorianCalendar)、DateFormat以及SimpleDateFormat这几个关键类进行详细介绍。 #### 1. Date 类 `java.util.Date` 是Java中...

Global site tag (gtag.js) - Google Analytics