/**
* 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));
}
}
java日期工具类
最新推荐文章于 2024-04-28 11:30:09 发布