java日期工具类

本文介绍了一个日期工具类,包含日期格式转换、获取当前系统时间、计算过去和未来的时间、获取某一天的开始和结束时间以及获取当前月份的开始和结束时间等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 * DateUtil.java.
 * com.chl.test.
 * 功能描述: TODO
 * ver      date        author
 * ──────────────────────────────────
 * 版本              2013-3-16     chl_smile
 * Copyright (c) 2013, CYOU All Rights Reserved.
 */

package com.chl.test;

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

/**
 * ClassName:DateUtil <br/>
 * Function:日期工具类. <br/>
 * date:2013-3-16 下午2:14:34 <br/>
 *
 * @author chenhongliang
 * @version
 */
public class DateUtil {

	 /**
	 * yyyyMMddHHmmssWithLine:日期的yyyy-MM-dd HH:mm:ss格式.
	 */
	public static final String yyyyMMddHHmmssWithLine = "yyyy-MM-dd HH:mm:ss";

	/**
	 * yyyyMMddHHmmssNoLine:日期的yyyyMMddHHmmss格式.
	 */
	public static final String yyyyMMddHHmmssNoLine = "yyyyMMddHHmmss";

	/**
	 * yyyyMMddWithLine:日期的yyyyMMddWithLine格式.
	 */
	public static final String yyyyMMddWithLine = "yyyy-MM-dd";

	/**
	 * yyyyMMddNoLine:日期的yyyyMMdd格式.
	 */
	public static final String yyyyMMddNoLine = "yyyyMMdd";


	/**
	 * strToDateTime:将字符串按照指定的格式转为日期类型. <br/>
	 *
	 * @author chenhongliang
	 * @param str 需要转换的字符转
	 * @param dateTimeFormat 日期的指定格式
	 * @return 指定格式的日期
	 */
	public static Date strToDateTime(String str, String dateTimeFormat){

		SimpleDateFormat sdf = setSimpleDateFormat(dateTimeFormat);
		Date dateTime = null;
		try {
			dateTime = sdf.parse(str);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return dateTime;
	}

	/**
	 * setSimpleDateFormat:格式化日期. <br/>
	 *
	 * @author chenhongliang
	 * @param dateFormat 要设置的日期格式
	 * @return 格式化后的日期
	 */
	public static SimpleDateFormat setSimpleDateFormat(String dateFormat){

		SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
		return sdf;

	}
	/**
	 * getCurrentTime:按照指定的格式获取当前系统时间. <br/>
	 *
	 * @author chenhongliang
	 * @param dateFormat 指定格式的当前系统时间
	 * @return 当前系统时间的指定格式
	 */
	public static Date getCurrentTime(String dateFormat){

		 Date currentTime = new Date();
		 return strToDateTime(dateTimeToStr(currentTime,dateFormat),dateFormat);
	}

	/**
	 * dateTimeToStr:将日期转为指定格式的字符串. <br/>
	 *
	 * @author chenhongliang
	 * @param date 需要转换的日期
	 * @param dateFormat 字符串的指定格式
	 * @return 指定格式的的字符串
	 */
	public static String dateTimeToStr(Date date, String dateFormat){
		SimpleDateFormat sdf = setSimpleDateFormat(dateFormat);
		return sdf.format(date);
	}

	/**
	 * getDateTimeBeforeN:获取n天前的时间. <br/>
	 *
	 * @author chenhongliang
	 * @param n N天前
	 * @return N天前的时间
	 */
	public static Date getDateTimeBeforeN(int n){
		Date date = new Date(System.currentTimeMillis()-n*1000*60*60*24);
		return date;
	}

	/**
	 * getDateTimeAfterN:获取N天后的时间. <br/>
	 *
	 * @author chenhongliang
	 * @param n N天后
	 * @return N天后的时间
	 */
	public static Date getDateTimeAfterN(int n){
		Date date = new Date(System.currentTimeMillis()+n*1000*60*60*24);
		return date;
	}

	/**
	 * getDateTimeStart:获取某一天的开始时间. <br/>
	 *
	 * @author chenhongliang
	 * @param date 某一的日期
	 * @param yyyyMMdd 某一天的yyyyMMdd格式
	 * @param dateFormat 日期的指定格式
	 * @return 某一的开始时间
	 */
	public static Date getDateTimeStart(Date date,String yyyyMMdd,String dateFormat){
		return strToDateTime((dateTimeToStr(date,yyyyMMdd)+" 00:00:00"),dateFormat);
	}

	/**
	 * getDateTimeEnd:获取某一天的结束时间. <br/>
	 *
	 * @author chenhongliang
	 * @param date 某一的日期
	 * @param yyyyMMdd 某一天的时间格式
	 * @param dateFormat 日期的指定格式
	 * @return 某一天的结束时间
	 */
	public static Date getDateTimeEnd(Date date,String yyyyMMdd,String dateFormat){
		return strToDateTime((dateTimeToStr(date,yyyyMMdd)+" 24:00:00"),dateFormat);
	}

	/**
	 * getCurrentMonthsDateTimeStart:获取当前月份的开始时间. <br/>
	 *
	 * @author chenhongliang
	 * @param date 当前日期
	 * @return 当前月份的开始时间
	 */
	public static Date getCurrentMonthsDateTimeStart(Date date){

		SimpleDateFormat shortSdf = new SimpleDateFormat("yyyy-MM-dd");
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		Date now = null;
		try
		{
		    c.set(5, 1);
		    now = shortSdf.parse(shortSdf.format(c.getTime()));
		}
		catch(Exception e)
		{
		    e.printStackTrace();
		}
		return now;
	}

	/**
	 * getCurrentMonthsDateTimeEnd:获取当前月份的结束时间. <br/>
	 *
	 * @author chenhongliang
	 * @param date 当前日期
	 * @return 当前月份的结束时间
	 */
	public static Date getCurrentMonthsDateTimeEnd(Date date){

		SimpleDateFormat shortSdf = new SimpleDateFormat("yyyy-MM-dd");
		SimpleDateFormat longSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		Date now = null;
		try
		{
		    c.set(5, 2);
		    c.add(2, 1);
		    c.add(5, -1);
		    now = longSdf.parse((new StringBuilder()).append(shortSdf.format(c.getTime())).append(" 00:00:00").toString());
		}
		catch(Exception e)
		{
		    e.printStackTrace();
		}
		return now;
	}

	public static void main(String[] args){

		//1获取yyyyMMddHHmmss格式的当前系统时间
		System.out.println(getCurrentTime(yyyyMMddHHmmssNoLine));
		//2获取yyyy-MM-dd HH:mm:ss格式的当前系统时间
		System.out.println(getCurrentTime(yyyyMMddHHmmssWithLine));
		//3获取yyyy-MM-dd格式的当前系统时间
		System.out.println(getCurrentTime(yyyyMMddWithLine));
		//4获取yyyyMMdd格式的当前系统时间
		System.out.println(getCurrentTime(yyyyMMddNoLine));
		//5获取2天前的时间
		System.out.println(dateTimeToStr(getDateTimeBeforeN(2),yyyyMMddHHmmssWithLine));
		//6获取2天后的时间
		System.out.println(dateTimeToStr(getDateTimeAfterN(2),yyyyMMddHHmmssWithLine));
		//7获取2天前的开始时间
		System.out.println(dateTimeToStr(getDateTimeStart(getDateTimeBeforeN(2),yyyyMMddWithLine,yyyyMMddHHmmssWithLine),yyyyMMddHHmmssWithLine));
		//8获取2天前的结束时间
		System.out.println(dateTimeToStr(getDateTimeEnd(getDateTimeBeforeN(2),yyyyMMddWithLine,yyyyMMddHHmmssWithLine),yyyyMMddHHmmssWithLine));
		//9获取当前月份的开始时间
		Date date = new Date();
		System.out.println(dateTimeToStr(getCurrentMonthsDateTimeStart(date),yyyyMMddHHmmssWithLine));
		//10获取当前月份的结束时间
		System.out.println(dateTimeToStr(getCurrentMonthsDateTimeEnd(date),yyyyMMddHHmmssWithLine));
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值