在做JavaWeb开发时经常要做的一件事就是要将浏览器中的日期值保存到数据库中,但是这就需要一个统一的日期存储格式才行。在此分享一下总结得到的经常使用的一些日期操作的工具方法。
package com.teemo.utils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* 日期、时间常用操作的工具类
*
* @author Timeng.Hero
*
*/
public class DateUtils {
/**
* 取得YYYYmmdd形式表示的8位当前日期
*
* @return
*/
public static String get8Date() {
Calendar calendar = Calendar.getInstance();
return String.format("%1$4tY%1$2tm%1$td", calendar);
}
/**
* 取得YYYYmmddHHMMSS形式表示的14位当前日期
*
* @return
*/
public static String get14Date() {
Calendar calendar = Calendar.getInstance();
return String.format("%1$4tY%1$2tm%1$td%1$2TH%1$2TM%1$2TS", calendar);
}
/**
* 取得YYYYmmdd形式表示的8位日期
*
* @param date
* 日期
* @return YYYYmmdd形式表示的日期
*/
public static String get8Date(Calendar date) {
return String.format("%1$4tY%1$2tm%1$td", date);
}
/**
* 取得YYYYmmddHHMMSS形式表示的14位当前日期
*
* @param date
* 日期
* @return YYYYmmddHHMMSS形式表示的日期
*/
public static String get14Date(Calendar date) {
return String.format("%1$4tY%1$2tm%1$td%1$2TH%1$2TM%1$2TS", date);
}
/**
* 取得日期转换成的Calendar对象
*
* @param date
* 8位或14位的日期
* @return Calendar对象
* @throws Exception
* 当转换出错时产生错误
*/
public static Calendar getCalFromDate(String date) throws Exception {
Calendar calendar = Calendar.getInstance();
int year = 0;
int month = 0;
int date_of_month = 0;
int hourOfDay = 0;
int minute = 0;
int second = 0;
try {
if (date.length() >= 8) {
year = Integer.valueOf(date.substring(0, 4));
month = Integer.valueOf(date.substring(4, 6)) - 1;
date_of_month = Integer.valueOf(date.substring(6, 8));
}
if (date.length() >= 14) {
hourOfDay = Integer.valueOf(date.substring(8, 10));
minute = Integer.valueOf(date.substring(10, 12));
second = Integer.valueOf(date.substring(12, 14));
}
} catch (NumberFormatException e) {
throw e;
}
calendar.set(year, month, date_of_month, hourOfDay, minute, second);
calendar.set(Calendar.MILLISECOND, 0);
return calendar;
}
/**
* 通过传入格式为yyyyMMddhhmmss的字符串参数,将其转换成YYYY-mm-dd HH:MM:SS 格式的时间字符串 *
*
* @return
* @throws ParseException
*/
public static String get19Date(String dtime) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddhhmmss");
Calendar calendar = Calendar.getInstance();
Date dateTime = simpleDateFormat.parse(dtime);
calendar.setTime(dateTime);
return String.format("%1$4tY-%1$2tm-%1$td %1$2TH:%1$2TM:%1$2TS", calendar);
}
/**
* 计算两个日期值之间相差的天数(24小时算一天)
* @param startDate 起始日(8位或14位的字符串类型的日期值)
* @param endDate 截止日(8位或14位的字符串类型的日期值)
* @return
* @throws Exception
*/
public static int getDaysBetween(String startDate, String endDate) throws Exception{
long start = getCalFromDate(startDate).getTimeInMillis();
long end = getCalFromDate(endDate).getTimeInMillis();
int days = (int) ((end - start) / (1000 * 60 * 60 * 24));
return days;
}
}