package com.fzl.util;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class DateUtil {
/**
* 默認日期格式
*/
public static String DEFAULT_FORMAT = "yyyy-MM-dd";
/**
* 格式化日期
* @param date 日期對象
* @return String 日期字符串
*/
public static String formatDate(Date date){
SimpleDateFormat f = new SimpleDateFormat(DEFAULT_FORMAT);
String sDate = f.format(date);
return sDate;
}
/**
* 獲取當年的第一天
* @param year
* @return
*/
public static Date getCurrYearFirst(){
Calendar currCal=Calendar.getInstance();
int currentYear = currCal.get(Calendar.YEAR);
return getYearFirst(currentYear);
}
/**
* 獲取當年的最后一天
* @param year
* @return
*/
public static Date getCurrYearLast(){
Calendar currCal=Calendar.getInstance();
int currentYear = currCal.get(Calendar.YEAR);
return getYearLast(currentYear);
}
/**
* 獲取某年第一天日期
* @param year 年份
* @return Date
*/
public static Date getYearFirst(int year){
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, year);
Date currYearFirst = calendar.getTime();
return currYearFirst;
}
/**
* 獲取某年最后一天日期
* @param year 年份
* @return Date
*/
public static Date getYearLast(int year){
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, year);
calendar.roll(Calendar.DAY_OF_YEAR, -1);
Date currYearLast = calendar.getTime();
return currYearLast;
}
public static String getAfterDay(String date,int num ){
//用給定的模式和默認語言環境的日期格式符號構造 SimpleDateFormat。
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd ");
Date dt=null;
try{
//解析字符串的文本,生成 Date
dt=sdf.parse(date);
}
catch(Exception e){
e.printStackTrace();
}
//使用默認時區和語言環境獲得一個日歷。
Calendar calendar=Calendar.getInstance();
//使用給定的 Date 設置此 Calendar 的時間。
calendar.setTime(dt);
//根據日歷的規則,為給定的日歷字段添加或減去指定的時間量。
calendar.add(Calendar.DATE, num);
//用給定的模式和給定語言環境的默認日期格式符號構造 SimpleDateFormat
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd",
Locale.ENGLISH);
//將給定的 Date 格式化為日期/時間字符串,
//calendar.getTime()返回一個表示此 Calendar 時間值(從歷元至現在的毫秒偏移量)的 Date 對象。
return simpleDateFormat.format(calendar.getTime());
}
public static String getBeforeDate(int num){
//使用默認時區和語言環境獲得一個日歷。
Calendar calendar=Calendar.getInstance();
//new Date()分配 Date 對象並初始化此對象,以表示分配它的時間(精確到毫秒)
calendar.setTime(new Date());
//根據日歷的規則,為給定的日歷字段添加或減去指定的時間量
calendar.add(Calendar.DATE, -num);
//用給定的模式和給定語言環境的默認日期格式符號構造 SimpleDateFormat
SimpleDateFormat simpleDateFormate=new SimpleDateFormat("yyyy-MM-dd",
Locale.ENGLISH);
return simpleDateFormate.format(calendar.getTime());
}
//獲得當前的日期
public static String getdate(){
// 分配 Date 對象並初始化此對象,以表示分配它的時間(精確到毫秒)
Date dt=new Date();
//dt.getTime()返回自 1970 年 1 月 1 日 00:00:00 GMT 以來此 Date 對象表示的毫秒數。
long tmlong=dt.getTime();
//分配 Date 對象並初始化此對象,以表示自從標准基准時間(稱為“歷元(epoch)”,
//Date(tmlong)即 1970 年 1 月 1 日 00:00:00 GMT)以來的指定毫秒數。
return (new java.sql.Date(tmlong).toString());
}
//獲得當前的日期時間,精確到時分秒,並轉化為字符串的形式
public static String getDateTime(){
Date dt=new Date();
long tmlong=dt.getTime();
//Time(tmlong):使用毫秒時間值構造 Time 對象。
return (new java.sql.Date(tmlong)+" "+
(new java.sql.Time(tmlong))).toString();
}
//字符串轉換成日期時間,不精確到時分秒
public static Date getStringToDate(String day){
//用給定的模式和默認語言環境的日期格式符號構造 SimpleDateFormat。
SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//HH是24小時制,hh是12小時制
SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd");
Date dt = new Date();
try{
dt=sdf2.parse(day);
}
catch(Exception e){
e.printStackTrace();
}
// return new java.sql.Date(dt.getTime());
return dt;
}
//字符串轉換成日期時間,精確到時分秒
public static Date getStringToDateTime(String day){
//用給定的模式和默認語言環境的日期格式符號構造 SimpleDateFormat。
SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//HH是24小時制,hh是12小時制
SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd");
Date dt = new Date();
DateFormat df2 = DateFormat.getDateTimeInstance();//可以精確到時分秒
try{
dt=sdf2.parse(day);
}
catch(Exception e){
e.printStackTrace();
}
// return dt;
return new java.sql.Date(dt.getTime());
}
//判斷字符串是否可以轉換成date格式
public static boolean isValidDate(String s)
{
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
// 設置lenient為false. 否則SimpleDateFormat會比較寬松地驗證日期,
//比如2007/02/29會被接受,並轉換成2007/03/01
dateFormat.setLenient(false);
try
{
dateFormat.parse(s);
return true;
}
catch (Exception e)
{
// 如果throw java.text.ParseException或者NullPointerException,就說明格式不對
return false;
}
}
//傳入日期格式的時間,並將之轉換成字符串
public static String dateToString(Date date){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
String day=sdf.format(date);
return day;
}
//將util.date轉化為java.sql.Timestamp,以免util.date存入數據庫的時時分秒損失
//此方法可能沒什么用
public static Timestamp getTimestamp(Date date) {
return new java.sql.Timestamp(date.getTime());
}
}