java开发过程中通常用到的一些日期转换方法
都是自己实际工作中遇到的,总结了一下
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.springframework.expression.ParseException;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.springframework.expression.ParseException;
public class DateUtil {
/**
* 默认日期格式
*/
private static final String DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss";
/**
* <字符串转换成日期> <如果转换格式为空,则利用默认格式进行转换操作>
*
* @param str
* 字符串
* @param format
* 日期格式
* @return 日期
* @see [类、类#方法、类#成员]
*/
public static Date str2Date(String str, String format) {
if (null == str || "".equals(str)) {
return null;
}
// 如果没有指定字符串转换的格式,则用默认格式进行转换
if (null == format || "".equals(format)) {
format = DEFAULT_FORMAT;
}
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date date = null;
try {
try {
date = sdf.parse(str);
} catch (java.text.ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return date;
} catch (ParseException e) {
}
return null;
}
/**
* <一句话功能简述> <功能详细描述>
*
* @param date
* 日期
* @param format
* 日期格式
* @return 字符串
* @see [类、类#方法、类#成员]
*/
public static String date2Str(Date date, String format) {
if (null == date) {
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(date);
}
/**
* <时间戳转换为字符串> <功能详细描述>
*
* @param time
* @return
* @see [类、类#方法、类#成员]
*/
public static String timestamp2Str(Timestamp time) {
Date date = new Date(time.getTime());
return date2Str(date, DEFAULT_FORMAT);
}
/**
* <时间戳转换为字符串> <功能详细描述>
*
* @param time
* @return
* @see [类、类#方法、类#成员]
*/
public static String timestamp2Str(Timestamp time,String format) {
Date date = new Date(time.getTime());
return date2Str(date, format);
}
/**
* <时间戳转换为字符串> <功能详细描述>
*
* @param time
* @return
* @see [类、类#方法、类#成员]
*/
public static Date timestamp2Date(Timestamp time) {
Date date = new Date(time.getTime());
SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_FORMAT);
try {
return sdf.parse(date2Str(date, DEFAULT_FORMAT));
} catch (java.text.ParseException e) {
e.printStackTrace();
return null;
}
}
/**
* <一句话功能简述> <功能详细描述>
*
* @param str
* @return
* @see [类、类#方法、类#成员]
*/
public static Timestamp str2Timestamp(String str) {
Date date = str2Date(str, DEFAULT_FORMAT);
return new Timestamp(date.getTime());
}
/**
* <一句话功能简述> <功能详细描述>
*
* @param str
* @return
* @see [类、类#方法、类#成员]
*/
public static Timestamp str2Timestamp(String str,String format) {
Date date = str2Date(str, format);
return new Timestamp(date.getTime());
}
/**
* 获取当前时间
*
* @return
*/
public static Timestamp getCurrentTimestamp() {
return str2Timestamp(date2Str(new Date(), DEFAULT_FORMAT));
}
public static Integer getTimeInterval(Timestamp start, Timestamp end) {
Long resultL = (end.getTime() - start.getTime()) / (1000 * 60);
return resultL.intValue();
}
/**
* 相差天数
* @param start
* @param end
* @return
*/
public static int getDateInterval(Date start,Date end){
Timestamp ks = convertDate2FirstSecond(start);
Timestamp js = convertDate2FirstSecond(end);
long day = (js.getTime() - ks.getTime()) / (1000 * 60 * 60 * 24);
return (int)day;
}
/**
* 计算当前日期到某一天之间的天数
* @return
* @throws ParseException
*/
public static long getIntervalDays(String str){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date start = null;
try {
start = sdf.parse(str);
} catch (java.text.ParseException e) {
e.printStackTrace();
}
java.util.Date date=new java.util.Date();
long time1=date.getTime();
long time2=start.getTime();
return (time1-time2)/(1000*3600*24);
}
/**
* 获取 从当日零时开始累积毫秒数
* @return
*/
public static long getMilliSeconds(){
long now = System.currentTimeMillis();
SimpleDateFormat sdfOne = new SimpleDateFormat("yyyy-MM-dd");
long overTime = 0;
try {
overTime = (now - (sdfOne.parse(sdfOne.format(now)).getTime()));
} catch (java.text.ParseException e) {
e.printStackTrace();
}
return overTime;
}
/**
* 相差月数
* @return
*/
public static int getMonthInterval(Date start,Date end){
Calendar ks = Calendar.getInstance();
ks.setTime(start);
Calendar js = Calendar.getInstance();
js.setTime(end);
int ksYear = ks.get(Calendar.YEAR);
int ksMonth = ks.get(Calendar.MONTH);
int jsYear = js.get(Calendar.YEAR);
int jsMonth = js.get(Calendar.MONTH);
if(ksYear == jsYear){
return jsMonth - ksMonth + 1;
}
ksMonth++;
jsMonth++;
return jsMonth + (12 - ksMonth + 1);
}
/**
* 返回当前日期
*
* @return
*/
public static Date getCurrentYYR() {
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
month++;
String date = year + "-" + month + "-" + day + " " + "00:00:00";
return str2Date(date, DEFAULT_FORMAT);
}
public static Timestamp convertDate2FirstSecond(Date date) {
String dateStr = date2Str(date, "yyyy-MM-dd");
dateStr = dateStr + " 00:00:00";
return str2Timestamp(dateStr);
}
public static Timestamp convertDate2LastSecond(Date date) {
if(date == null) return null;
String dateStr = date2Str(date, "yyyy-MM-dd");
dateStr = dateStr + " 23:59:59";
return str2Timestamp(dateStr);
}
public static Timestamp convertDate2FirstSecondYear(Date date) {
String dateStr = date2Str(date, "yyyy");
dateStr = dateStr + "-1-1 00:00:00";
return str2Timestamp(dateStr);
}
public static Timestamp convertDate2LastSecondYear(Date date) {
if(date == null) return null;
String dateStr = date2Str(date, "yyyy");
dateStr = dateStr + "-12-31 23:59:59";
return str2Timestamp(dateStr);
}
public static Timestamp convertDate2FirstSecondMonth(Date date) {
String dateStr = date2Str(date, "yyyy-MM");
dateStr = dateStr + "-1 00:00:00";
return str2Timestamp(dateStr);
}
public static Timestamp convertDate2LastSecondMonth(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
if(date == null) return null;
String dateStr = date2Str(date, "yyyy-MM");
dateStr = dateStr + "-"+c.getActualMaximum(Calendar.DAY_OF_MONTH)+" 23:59:59";
return str2Timestamp(dateStr);
}
public static Date dateAddOneDay(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DAY_OF_MONTH, 1);
return c.getTime();
}
public static Date dateSubtractOneDay(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DAY_OF_MONTH, -1);
return c.getTime();
}
/**
* 13:55 转化为 2016-06-17 13:55:00
* @param time
* @return
*/
public static Timestamp convertSF2Time(String date,String time){
String dateTime = date + " " + time + ":00";
return str2Timestamp(dateTime);
}
/**
* 获取下一个凌晨
* @return
*/
public static Timestamp getNext00(){
Date date = getCurrentYYR();
date = dateAddOneDay(date);
return new Timestamp(date.getTime());
}
}