`

一个日期的常用处理工具类

    博客分类:
  • 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, 1);// 日,设为一号
        cal.add(Calendar.MONTH, 1);// 月份加一,得到下个月的一号
        cal.add(Calendar.DATE, -1);// 下一个月减一为本月最后一天
        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常用的工具类

    通常,这样的库会包含一系列针对特定场景的工具类,如日期时间处理、文件操作、字符串格式化、数据校验等。例如,可能会有一个DateTimeUtils类,提供日期和时间的格式化、比较和转换方法;一个FileUtils类,用于文件...

    自己整理的C#常用工具类

    3. **单一职责原则**:遵循单一职责原则,每个工具类应专注于一个特定领域,如字符串操作、日期时间处理、数学计算等,避免混杂多个领域的功能。 4. **线程安全**:如果工具类的方法可能在多线程环境中被调用,需要...

    java常用的工具类整理28个

    下面我们将详细探讨Java中28个常用的工具类,主要涉及`IO`相关的开发工具。 1. **java.lang.Math**:这个类提供了许多基础数学函数,如求平方根、最大值、最小值、随机数生成等。 2. **java.util.Arrays**:用于...

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

    该Java工具类调用时只需要类名.方法即可调用。 1.返回纯数字的年月日时分秒时间戳:20191008103656 4.在日期上增加数个整月 5.在日期上增加天数 6.在日期上增加n分钟 7.两个时间相差距离多少天多少小时...

    C#工具类库类库 包含所有的常用工具类

    标题中的"C#工具类库类库 包含所有的常用工具类"暗示了这是一个集合,包含了多种实用工具类,能够极大地提升开发效率。这些工具类涵盖了从文件操作到网络通信的多个领域。 首先,FTP操作类是用于与FTP服务器进行...

    Android常用工具类

    - **BitmapUtil**: 图片处理工具类,可能包含图片的压缩、裁剪、转换等功能。 - **NetworkUtil**: 检查网络状态,判断网络连接类型(如Wi-Fi、移动数据)等。 - **JSONUtil**: 解析和生成JSON数据,可以集成Gson...

    34个最常用的工具类

    - `TextUtils`:Android SDK提供的一个工具类,用于处理文本,如比较字符串、检查是否为空、格式化字符串等。 2. **日期时间操作**: - `DateUtils`:提供日期和时间的格式化、比较和解析功能。 - `TimeUtils`:...

    java常用工具类

    文件工具类,Http请求工具类,图片处理工具类。...mail工具类,Map工具类,MD5编码工具类,数字工具类,随机数工具类,反射工具类,字符串处理工具类,URL工具类,XML工具类,常用的数据验证工具类

    安卓开发框架工具类相关-Android快速开发系列10个常用工具类.rar

    4. "zhy_android_utils":这个可能是包含10个工具类的Java包,每个工具类都是独立的,解决特定的问题,比如可能有处理日期时间的工具类、字符串处理工具类、网络请求工具类等。 在实际的Android开发中,工具类的...

    javaweb项目常用工具包

    Base64工具类-字符编码工具类-数据类型转换-日期工具类-Escape中文...MD5编码工具类- MD5加密 生成32位md5码-数字工具类-随机数工具类-反射工具类-字符串处理工具类-URL工具类-UUID-常用的数据验证工具类-XML工具类-

    Java常用工具类

    Java常用工具类是Java开发中不可或缺的一部分,它们提供了一系列便捷的方法,帮助开发者高效地处理各种常见任务。在Java中,最著名的工具类库是`java.util`包,它包含了大量实用类,如集合、日期时间、数学计算、...

    开发常用工具类

    8. **XML和JSON处理工具类**: - `DOM`, `SAX`, `StAX`:Java 核心库中的 XML 解析器,用于解析和生成 XML 文档。 - `Jackson`, `Gson`, `XmlMapper`:用于 JSON 数据的序列化和反序列化。 9. **网络工具类**: ...

    java日期处理工具类

    * 在工具类中经常使用到工具类的格式化描述,这个主要是一个日期的操作类,所以日志格式主要使用 SimpleDateFormat的定义格式. * * 格式的意义如下: 日期和时间模式 * 日期和时间格式由日期和时间模式...

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

    Java提供了多种处理日期的工具类,其中一个常用的工具类就是`java.util.Date`,以及从Java 8开始引入的`java.time`包中的类。本文将重点讲解Java日期的常用操作方法,主要基于提供的`JavaDateUtil.java`文件,假设这...

    java开发,30个常用工具类总结,全部来自项目实践中用到的工具类

    1. **DateUtils**: `java.util.Date` 和 `java.time` 包含日期和时间的操作,但DateUtils通常是Apache Commons Lang库中的一个工具类,提供更方便的日期处理方法,如格式化、解析、比较和日期的加减操作。...

    28个java常用的工具类

    标题提到的“28个Java常用的工具类”可能是一个集合,包含了各种实用功能的类。以下是一些常见的Java工具类及其功能的详细说明: 1. **String类**:Java内置的String类提供了大量操作字符串的方法,如concat、...

    28个java常用的工具类源码

    20. **URL处理工具类**:如UrlUtils,对URL进行解析、构建、编码等操作,处理网络链接问题。 21. **编码转换工具类**:如CharsetUtils,处理字符集的转换,确保在不同系统间数据的一致性。 22. **对象判断工具类**...

    Android快速开发系列 10个常用工具类 程序源码

    2. **DateUtil**: 时间日期处理工具类,通常包含将日期格式化为字符串,字符串转换为日期,计算两个日期之间的差值等功能。在Android开发中,这类工具类能帮助开发者更好地管理和展示时间数据。 3. **BitmapUtil**:...

Global site tag (gtag.js) - Google Analytics