`
Franciswmf
  • 浏览: 799989 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

日期时间工具类

 
阅读更多
  /**
     * 取得当前日期所在周的第一天
     *
     * @param date
     * @return
     */
    public static Date getFirstDayOfWeek(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setFirstDayOfWeek(Calendar.SUNDAY);
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_WEEK,
                      calendar.getFirstDayOfWeek()); // Sunday
        return calendar.getTime();
    }

    /**
     * 取得当前日期所在周的最后一天
     *
     * @param date
     * @return
     */
    public static Date getLastDayOfWeek(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setFirstDayOfWeek(Calendar.SUNDAY);
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_WEEK,
                     calendar.getFirstDayOfWeek() + 6); // Saturday
        return calendar.getTime();
    }



    /**
     * 日期加减天数,并以Date形式返回
     * @param value
     * @param num
     * @return
     */
    public static Date addDays(Date date, int num) {
    	if (date == null) {
            return null;
        }
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.add(Calendar.DATE, num);
        return c.getTime();
    }
    
    /**
     * 日期加减月数,并以Date形式返回
     * @param value
     * @param num
     * @return
     */
    public static Date addMonths(Date date, int num) {
    	if (date == null) {
            return null;
        }
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.add(Calendar.MONTH, num);
        return c.getTime();
    }

public static void main(String[] args) {
		Date dt=new Date();
		System.out.println("本周第一天:"+getFirstDayOfWeek(dt)+";"+DateExtendUtils.addDay(getFirstDayOfWeek(dt), 1));
		System.out.println("本周最后一天:"+getLastDayOfWeek(dt)+";"+DateExtendUtils.addDay(getLastDayOfWeek(dt), 1));
	}


/**
	 * 增加日期的年份。失败返回null。
	 * 
	 * @param date
	 *            日期
	 * @param yearAmount
	 *            增加数量。可为负数
	 * @return 增加年份后的日期字符串
	 */
	public static String addYear(String date, int yearAmount) {
		return addInteger(date, Calendar.YEAR, yearAmount);
	}

	/**
	 * 增加日期的年份。失败返回null。
	 * 
	 * @param date
	 *            日期
	 * @param yearAmount
	 *            增加数量。可为负数
	 * @return 增加年份后的日期
	 */
	public static Date addYear(Date date, int yearAmount) {
		return addInteger(date, Calendar.YEAR, yearAmount);
	}

	/**
	 * 增加日期的月份。失败返回null。
	 * 
	 * @param date
	 *            日期
	 * @param monthAmount
	 *            增加数量。可为负数
	 * @return 增加月份后的日期字符串
	 */
	public static String addMonth(String date, int monthAmount) {
		return addInteger(date, Calendar.MONTH, monthAmount);
	}

	/**
	 * 增加日期的月份。失败返回null。
	 * 
	 * @param date
	 *            日期
	 * @param monthAmount
	 *            增加数量。可为负数
	 * @return 增加月份后的日期
	 */
	public static Date addMonth(Date date, int monthAmount) {
		return addInteger(date, Calendar.MONTH, monthAmount);
	}

	/**
	 * 增加日期的天数。失败返回null。
	 * 
	 * @param date
	 *            日期字符串
	 * @param dayAmount
	 *            增加数量。可为负数
	 * @return 增加天数后的日期字符串
	 */
	public static String addDay(String date, int dayAmount) {
		return addInteger(date, Calendar.DATE, dayAmount);
	}

	/**
	 * 增加日期的天数。失败返回null。
	 * 
	 * @param date
	 *            日期
	 * @param dayAmount
	 *            增加数量。可为负数
	 * @return 增加天数后的日期
	 */
	public static Date addDay(Date date, int dayAmount) {
		return addInteger(date, Calendar.DATE, dayAmount);
	}

	/**
	 * 增加日期的小时。失败返回null。
	 * 
	 * @param date
	 *            日期字符串
	 * @param hourAmount
	 *            增加数量。可为负数
	 * @return 增加小时后的日期字符串
	 */
	public static String addHour(String date, int hourAmount) {
		return addInteger(date, Calendar.HOUR_OF_DAY, hourAmount);
	}

	/**
	 * 增加日期的小时。失败返回null。
	 * 
	 * @param date
	 *            日期
	 * @param hourAmount
	 *            增加数量。可为负数
	 * @return 增加小时后的日期
	 */
	public static Date addHour(Date date, int hourAmount) {
		return addInteger(date, Calendar.HOUR_OF_DAY, hourAmount);
	}

	/**
	 * 增加日期的分钟。失败返回null。
	 * 
	 * @param date
	 *            日期字符串
	 * @param minuteAmount
	 *            增加数量。可为负数
	 * @return 增加分钟后的日期字符串
	 */
	public static String addMinute(String date, int minuteAmount) {
		return addInteger(date, Calendar.MINUTE, minuteAmount);
	}

	/**
	 * 增加日期的分钟。失败返回null。
	 * 
	 * @param date
	 *            日期
	 * @param dayAmount
	 *            增加数量。可为负数
	 * @return 增加分钟后的日期
	 */
	public static Date addMinute(Date date, int minuteAmount) {
		return addInteger(date, Calendar.MINUTE, minuteAmount);
	}

	/**
	 * 增加日期的秒钟。失败返回null。
	 * 
	 * @param date
	 *            日期字符串
	 * @param dayAmount
	 *            增加数量。可为负数
	 * @return 增加秒钟后的日期字符串
	 */
	public static String addSecond(String date, int secondAmount) {
		return addInteger(date, Calendar.SECOND, secondAmount);
	}

	/**
	 * 增加日期的秒钟。失败返回null。
	 * 
	 * @param date
	 *            日期
	 * @param dayAmount
	 *            增加数量。可为负数
	 * @return 增加秒钟后的日期
	 */
	public static Date addSecond(Date date, int secondAmount) {
		return addInteger(date, Calendar.SECOND, secondAmount);
	}



    /**
     * "yyyy-MM-dd HH:mm:ss"
     */
    public static String DATE_PATTERN_01="yyyy-MM-dd HH:mm:ss";

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.lang.StringUtils;

import com.bill99.mbp.common.enums.CommonConstants;
/**
 * 日期时间处理工具类
 */
public class TestDateUtils {
	/**
	 * 线程隔离的THREADLOCAL_SDF
	 * (ThreadLocal用于保存某个线程共享变量:
	 * 对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量)
	 */
    private static final ThreadLocal<SimpleDateFormat> THREADLOCAL_SDF= new ThreadLocal<SimpleDateFormat>() {
        @Override
        protected SimpleDateFormat initialValue() {
            return new SimpleDateFormat(CommonConstants.DATE_PATTERN_01);
        }
    };
    
    /**
     * 将Date格式按照默认的pattern形式转换为字符串格式
     * @param date
     * @return
     */
    public static String formatFun(Date date) {
        return THREADLOCAL_SDF.get().format(date);
    }
    
    /**
     * 将Date格式按照pattern形式转换为字符串格式
     * @param date
     * @param pattern
     * @return
     */
    public static String formatFun(Date date, String pattern) {
    	if(null == date || StringUtils.isBlank(pattern)){
    		return "";
    	}
        SimpleDateFormat sdf = THREADLOCAL_SDF.get();
        try {
            sdf.applyPattern(pattern);
            return sdf.format(date);
        } finally {
            sdf.applyPattern(CommonConstants.DATE_PATTERN_01);
        }

    }
    /**
     * 时间戳转换成日期格式字符串
     * @param seconds 精确到秒的字符串
     * @param formatStr
     * @return
     */
    public static String timeStamp2DateFun(Long date) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        if (date == null || date.equals("null")) {
            return "";
        }
        return format.format(date);
    }

    /** 
     * 将时间转换为时间戳
     */    
    public static Long date2StampFun(String s) throws ParseException{
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = simpleDateFormat.parse(s);
        Long ts = date.getTime();
        return ts;
    }

    public static void main(String[] args) {
		Date now=new Date();
		String nowStr=format(now);
		System.out.println(nowStr);
	}
}



public class YearUtils {
	
	/** 
	*判断指定年份是平年还是闰年
	*true-闰年;false-平年;
	*闰年的认定条件是符合下面二者之一:
	*(1)年份能被4整除,但不能被100整除;
	*(2)能被400整除。
	**/
	public static boolean checkYear(int year){
		if( ( year%4==0 && year%100!=0 ) || year%400==0 ){
			//闰年
			return true;
		}else{
			//平年
			return false;
		}
	}
	
/*	public static void main(String[] args) {
		boolean bool=checkYear(2004);
		System.out.println(bool);
		boolean bool2=checkYear(2016);
		System.out.println(bool2);
		boolean bool3=checkYear(2019);
		System.out.println(bool3);
	}*/
}
分享到:
评论

相关推荐

    java日期时间工具类超级全

    java日期时间工具类超级全。其中包含:获得当前日期 yyyy-MM-dd HH:mm:ss;获取系统当前时间戳;获取当前日期 yy-MM-dd;得到两个时间差 格式yyyy-MM-dd HH:mm:ss;转化long值的日期为yyyy-MM-dd HH:mm:ss.SSS格式的...

    java操作日期时间工具类

    在Java编程语言中,处理日期和...总之,一个良好的日期时间工具类应该简化日期时间的常见操作,提高代码的可读性和可维护性。在Java 8及更高版本中,可以考虑利用`java.time`包提供的新特性来进一步优化工具类的设计。

    自己整理的日期时间工具类

    ### 一、日期时间工具类的作用与应用场景 日期时间工具类主要用于处理日期和时间相关的操作,比如日期的格式化、解析、比较等。在实际开发中,此类工具类十分常见,因为几乎所有的应用都会涉及到日期和时间的处理。...

    java日期时间工具类

    java日期时间工具类,里面主要包括了日期与字符串之间的相互转换,以及输出指定的日期格式

    java 日期时间工具类 日期时间的加减 身份证号上的日期是否小于2岁等

    java 日期时间工具类 日期时间的加减 身份证号上的日期是否小于2岁等

    时间工具类

    时间类型方面很好用的工具类,包括时间类型的转化与计算等

    最全的java时间(日期)工具类

    本文将深入探讨Java中的日期时间工具类,特别是基于给定的"DateUtil.java"文件,我们将聚焦在传统`java.util.Date`和`java.text.SimpleDateFormat`以及Java 8的`java.time`包中的相关类。 首先,我们来看看`java....

    日期时间处理工具类

    这是一个比较全面的处理日期时间的工具类,利用该工具类可以得到你想要的日期时间。里面代码简洁,方法已经封装好,只需要调用即可。自己可以将其打成jar包来用

    Java 日期比较工具类

    Java 日期比较工具类 各种日期操作及计算( 获取两个日期 间隔天数 间隔月数 格式化日期 )

    Java - DateUtil 日期时间转换工具类

    资源名称:DateUtil 日期时间转换工具类 内容概要:日期时间转换工具类,包括基本的Date类型,String类型,TimeStamp类型,LocalDateTime类型,LocalDate类型之间的互相转换,还提供了许多与时间获取,时间计算有关...

    android工具类 26个实用工具类

    3. **日期时间工具类**:例如`DateUtil`,可以方便地进行日期时间的转换,如将日期字符串转化为日期对象,或者计算两个日期之间的差值。 4. **JSON解析工具类**:如`JsonUtil`,用于解析JSON字符串到Java对象,或把...

    Android开发常用工具类

    2. **日期时间工具类**: - `DateUtils`:提供了对日期和时间的处理,如格式化日期、计算两个日期之间的差值、获取当前时间等。 - `TimeUtils`:包含与时间相关的操作,例如将毫秒值转换为友好的显示格式。 3. **...

    最新版工具类

    2. **日期时间工具类**:`DateUtils`或`TimeUtils`,可以帮助开发者进行日期和时间的格式化、比较、计算差值等操作,简化对`java.util.Date`和`java.time`API的使用。 3. **网络请求工具类**:Android应用经常需要...

    操作日期时间的工具类,封装的比较完善

    java写的,操作日期时间的工具类,封装的比较完善,可以获取最小时间, 获取最大时间,获取今天最小时间,获取今天最大时间,获取明天的最小时间,获取明天的最大时间,获取昨天的最小时间,获取昨天的最大时间,...

    java操作工具类

    4. **日期时间工具类**: 这类工具类通常提供了日期时间的格式化、解析、比较、计算等功能,以简化对`Date`和`Calendar`的操作。例如,`DateUtils`可以方便地进行日期时间的加减操作,`DateFormatUtils`则用于格式化...

    android开发各种工具类

    2. **日期时间工具类** (DateTimeUtil) - `getNow()`:获取当前时间戳或格式化的当前日期时间。 - `formatDate()`:将时间戳转换为指定格式的日期字符串。 - `compareDate()`:比较两个日期的先后顺序。 3. **...

    Java工具类

    1. **日期时间工具类**: 这个工具类通常用于处理日期和时间相关的操作,如获取当前日期、格式化日期字符串、计算两个日期之间的差值等。Java 8引入了`java.time`包,提供了更强大的日期和时间API,但这个工具类...

    java常用工具类封装util.rar

    2. **日期时间工具类(DateUtil)**:在Java中,日期和时间操作往往比较复杂,这类工具类会提供方便的方法来解析、格式化日期,进行日期的加减操作等。例如`parse()`用于将字符串转换为日期对象,`format()`则可将日期...

    日期处理工具类

    "日期处理工具类"通常是指一个自定义的类,它封装了一些常用的方法,例如日期格式化、字符串转换为日期以及对日期进行加减操作。这个类可能是开发者为了提高代码复用性和简化日期处理逻辑而创建的。 首先,让我们...

    android 开发常用到的工具类集锦

    4. **日期时间工具类**:处理日期和时间在Android开发中非常常见,例如格式化日期、计算时间差等。Android提供了一些基础的日期时间API,但往往不够灵活,所以开发者会自定义或者使用第三方库如ThreeTenABP,提供更...

Global site tag (gtag.js) - Google Analytics