DateUtils(話不多說直接上程式碼)
/**
* 日期格式化類
*/
public class DateUtil extends java.util.Date {
private static final long serialVersionUID = 1L;
private static final DateFormat datetimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private static final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
private static final String strFormat1 = "yyyy-MM-dd HH:mm";
/**
M 年中的月份 Month July; Jul; 07
w 年中的週數 Number 27
W 月份中的週數 Number 2
D 年中的天數 Number 189
d 月份中的天數 Number 10
F 月份中的星期 Number 2
E 星期中的天數 Text Tuesday; Tue
a Am/pm 標記 Text PM
H 一天中的小時數(0-23) Number 0
k 一天中的小時數(1-24) Number 24
K am/pm 中的小時數(0-11) Number 0
h am/pm 中的小時數(1-12) Number 12
m 小時中的分鐘數 Number 30
s 分鐘中的秒數 Number 55
S 毫秒數 Number 978
z 時區 General time zone Pacific Standard Time; PST; GMT-08:00
Z 時區 RFC 822 time zone -0800
*/
/**
* 建構函式
*/
public DateUtil() {
super(getSystemDate().getTime().getTime());
}
/**
* 當前時間
*
* @return 時間Timestamp
*/
public java.sql.Timestamp parseTime() {
return new java.sql.Timestamp(this.getTime());
}
/**
* 將Date型別轉換為字串 yyyy-MM-dd HH:mm:ss
*
* @param Date
* @return String
*/
public static String format(Date date) {
return format(date, null);
}
/**
* 將Date型別轉換為字串
*
* @param Date
* @param pattern 字串格式
* @return String
*/
public static String format(Date date, String pattern) {
if (date == null) {
return "";
} else if (pattern == null || pattern.equals("") || pattern.equals("null")) {
return datetimeFormat.format(date);
} else {
return new SimpleDateFormat(pattern).format(date);
}
}
/**
* 將Date型別轉換為字串 yyyy-MM-dd
*
* @param Date
* @return String
*/
public static String formatDate(Date date) {
if (date == null) {
return "";
}
return dateFormat.format(date);
}
/**
* 將字串轉換為Date型別
*
* @param sDate yyyy-MM-dd HH:mm:ss
* @return
*/
public static Date convert(String sDate) {
try {
if (sDate != null) {
if (sDate.length() == 10) {
return dateFormat.parse(sDate);
} else if (sDate.length() == 19) {
return datetimeFormat.parse(sDate);
}
}
} catch (ParseException pe) {
}
return convert(sDate, null);
}
/**
* 將字串轉換為Date型別
*
* @param sDate
* @param pattern 格式
* @return
*/
public static Date convert(String sDate, String pattern) {
Date date = null;
try {
if (sDate == null || sDate.equals("") || sDate.equals("null")) {
return null;
} else if (pattern == null || pattern.equals("") || pattern.equals("null")) {
return datetimeFormat.parse(sDate);
} else {
return new SimpleDateFormat(pattern).parse(sDate);
}
} catch (ParseException pe) {
}
return date;
}
/**
* String轉換為Date
*
* @param sDate 日期"yyyy-MM-dd"
* @return 日期Date
*/
public static Date convertDate(String dateStr) {
return convert(dateStr, "yyyy-MM-dd");
}
/**
* String轉換為Timestamp
*
* @param sDate 日期 "yyyy-MM-dd" / "yyyy-MM-dd HH:mm:ss"
* @return 日期Timestamp
*/
public static Timestamp convertTimestamp(String sDate) {
if (sDate.length() == 10) {
sDate = sDate + " 00:00:00";
}
if (sDate.length() == 16) {
sDate = sDate + ":00";
}
return Timestamp.valueOf(sDate);
}
/**
* Date轉換為Timestamp
*/
public static Timestamp convert(Date date) {
return new Timestamp(date.getTime());
}
/**
* 取當前日期(yyyy-mm-dd)
*
* @return 時間Timestamp
*/
public static String getTodayDate() {
return formatDate(new Date());
}
/**
* 取當前日期(yyyy-mm-dd hh:mm:ss)
*
* @return 時間Timestamp
*/
public static String getTodayDateTime() {
return format(new Date());
}
/**
* 取得n分鐘後的時間
*
* @param date 日期
* @param afterMins
* @return 時間Timestamp
*/
public static Date getAfterMinute(Date date, long afterMins) {
if (date == null)
date = new Date();
long longTime = date.getTime() + afterMins * 60 * 1000;
return new Date(longTime);
}
/**
* add by yinshengming start 2016-4-7
* 取得n秒後的時間
*
* @param date 日期
* @param afterMins
* @return 時間Timestamp
*/
public static Date getAfterSecond(Date date, long afterMins) {
if (date == null)
date = new Date();
long longTime = date.getTime() + afterMins * 1000;
return new Date(longTime);
}
// public static void main(String[] arg) {
// System.err.println(format((new Date())));
// System.err.println(format(getAfterMinute(new Date(), 3)));
// }
/**
* 取得指定日期幾天後的日期
*
* @param date 日期
* @param afterDays 天數
* @return 日期
*/
public static Date getAfterDay(Date date, int afterDays) {
if (date == null)
date = new Date();
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(date);
cal.add(java.util.Calendar.DATE, afterDays);
return cal.getTime();
}
/**
* 取得指定日期幾天後的日期
*
* @param sDate 日期 yyyy-MM-dd
* @param afterDays 天數
* @return 日期
*/
public static String getAfterDay(String sDate, int afterDays) {
Date date = convertDate(sDate);
date = getAfterDay(date, afterDays);
return formatDate(date);
}
/**
* 取得指定日期幾天前的日期
*
* @param date 日期
* @param beforeDays 天數(大於0)
* @return 日期
*/
public static Date getBeforeDay(Date date, int beforeDays) {
if (date == null)
date = new Date();
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(date);
cal.add(java.util.Calendar.DATE, 0 - Math.abs(beforeDays));
return cal.getTime();
}
/**
* 取得指定日期幾天前的日期
*
* @param sDate 日期 yyyy-MM-dd
* @param beforeDays 天數(大於0)
* @return 日期
*/
public static String getBeforeDay(String sDate, int beforeDays) {
Date date = convertDate(sDate);
date = getBeforeDay(date, beforeDays);
return formatDate(date);
}
/**
* 獲得幾個月後的日期
*
* @param date 日期
* @param afterMonth 月數
* @return 日期Date
*/
public static Date getAfterMonth(Date date, int afterMonth) {
if (date == null)
date = new Date();
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(date);
cal.add(java.util.Calendar.MONTH, afterMonth);
return cal.getTime();
}
/**
* 獲得幾個月後的日期
*
* @param sDate 日期
* @param afterMonth 月數
* @return 日期"yyyy-MM-dd"
*/
public static String getAfterMonth(String sDate, int afterMonth) {
Date date = convertDate(sDate);
date = getAfterMonth(date, afterMonth);
return formatDate(date);
}
/**
* 獲得幾年後的日期
*
* @param date 日期
* @param afterYear 年數
* @return 日期Date
*/
public static Date getAfterYear(Date date, int afterYear) {
if (date == null)
date = new Date();
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(date);
cal.add(java.util.Calendar.YEAR, afterYear);
return cal.getTime();
}
/**
* 獲得幾年後的日期
*
* @param date 日期
* @param afterYear 年數
* @return 日期Date
*/
public static String getAfterYear(String sDate, int afterYear) {
Date date = convertDate(sDate);
date = getAfterYear(date, afterYear);
return formatDate(date);
}
/**
* 取得月份第一天日期
*
* @param sDate(yyyy-mm-dd) : 如為Null,預設取當前系統時間
* @return yyyy-mm-dd
*/
public static String getMonthFirstDay(String sDate) {
Date date = null;
if (sDate != null && sDate.length() > 0) {
date = convertDate(sDate);
}
Calendar gc = Calendar.getInstance();
if (date != null) {
gc.setTime(date);
}
gc.set(Calendar.DATE, 1);
return formatDate(gc.getTime());
}
/**
* 取得月份最後一天日期
*
* @param sDate(yyyy-mm-dd) : 如為Null,預設取當前系統時間
* @return yyyy-mm-dd
*/
public static String getMonthLastDay(String sDate) {
Date date = null;
if (sDate != null && sDate.length() > 0) {
date = convertDate(sDate);
}
Calendar gc = Calendar.getInstance();
if (date != null) {
gc.setTime(date);
}
gc.add(Calendar.MONTH, 1);
gc.add(Calendar.DATE, -gc.get(Calendar.DAY_OF_MONTH));
return formatDate(gc.getTime());
}
/**
* 取得日期,星期幾
*
* @param dateTime : dateTime
* @return "星期日","星期一","星期二","星期三","星期四","星期五","星期六"
*/
public static String getWeekDayName(String dateTime) throws ParseException {
String dayNames[] = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
Date d = convertDate(dateTime);
Calendar cal = Calendar.getInstance();
cal.setTime(d);
int day = cal.get(Calendar.DAY_OF_WEEK);
String week_day_name = dayNames[day - 1];
return week_day_name;
}
/**
* 傳入的日期格式是否是yyyy-MM-dd
*
* @param in 被檢查的日期
* @return 是指定的日期格式:true,否則:false
*/
public static boolean isFormatDate(String in) {
return isFormatDate(in, "yyyy-MM-dd");
}
/**
* 傳入的日期格式是否是指定的日期格式
*
* @param in 被檢查的日期
* @param format 指定的日期格式
* @return 是指定的日期格式:true,否則:false
*/
private static boolean isFormatDate(String in, String format) {
if (format != null & format.length() > 0) {
return false;
}
final SimpleDateFormat sdFormat = new SimpleDateFormat(format);
Date dateCompare = null;
String sDate = "";
try {
dateCompare = sdFormat.parse(in, new ParsePosition(0));
sDate = sdFormat.format(dateCompare);
} catch (final Exception e) {
return false;
}
if (dateCompare == null) {
return false;
} else {
return sDate.equals(in);
}
}
/**
* 比較兩個日期先後
*
* @param date1 : yyyy-MM-dd
* @param date1 : yyyy-MM-dd
* @return date1 > date2 : true, else : false
*/
public static boolean compareDate(String date1, String date2) {
if (isFormatDate(date1, "yyyy-MM-dd") && isFormatDate(date2, "yyyy-MM-dd")) {
if (date1.compareTo(date2) > 0) {
return false;
} else {
return true;
}
} else {
return false;
}
}
/**
* 取當前系統時間
*
* @return 時間Calendar
*/
public static Calendar getSystemDate() {
return Calendar.getInstance();
}
/**
* 轉換型別
*
* @param sDate 日期"yyyy-MM-dd HH:mm"
* @return 日期Date
* @throws Exception
*/
public static java.util.Date convertDate1(String sDate) throws Exception {
SimpleDateFormat sFormat1 = new SimpleDateFormat(strFormat1);
return sFormat1.parse(sDate);
}
/**
* 取得輸入時間n分鐘前的時間
*
* @param date 日期
* @param lminute
* @return 時間Timestamp
*/
public static Timestamp gettimebefore(java.util.Date date, long lminute) {
long lngTime = date.getTime() - lminute * 60 * 1000;
return new Timestamp(lngTime);
}
/**
* 取得日期,星期幾
*
* @param dateTime
* : dateTime
* @return "週日","週一","週二","週三","週四","週五","週六"
*/
public static String getWeekDays(Date dateTime){
String dayNames[] = { "週日", "週一", "週二", "週三", "週四", "週五", "週六" };
int day = getWeekDay(dateTime);
String week_day_name = dayNames[day - 1];
return week_day_name;
}
/**
* 取得日期,星期幾
*
* @param dateTime
* : dateTime
* @return "週日","週一","週二","週三","週四","週五","週六"
*/
public static String getWeekOfDate(Date dateTime){
String dayNames[] = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
int day = getWeekDay(dateTime);
String week_day_name = dayNames[day - 1];
return week_day_name;
}
/**
* 取得日期是星期的第幾天
*
* @param dateTime
* : dateTime
* @return :1: "星期日",2:"星期一", 3:"星期二",,4:"星期三", 5:"星期四", 6:"星期五", 7:"星期六"
*/
public static int getWeekDay(Date dateTime) {
Calendar cal = Calendar.getInstance();
cal.setTime(dateTime);
return cal.get(Calendar.DAY_OF_WEEK);
}
/**
* 求2個日期之間的天數
*
* @param StartDay 開始日期
* @param endDay 結束日期
* @param IncludeEndFlag 是否把結束當天算在內,Y:是,N:否
* @return
* @throws Exception
*/
public static long DayCountBetweenDays(String StartDay, String endDay,
String IncludeEndFlag) throws Exception {
long DAY = 24L * 60L * 60L * 1000L;
long countBetweenDay = 0;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date d1 = df.parse(StartDay);
Date d2 = df.parse(endDay);
countBetweenDay = (d2.getTime() - d1.getTime()) / DAY;
if (IncludeEndFlag == "Y") {
countBetweenDay++;
}
return countBetweenDay;
}
}
public class JsonUtils {
public static String getJson(Object object,String date) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
//設定不使用時間戳的方式
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
//自定義時間的格式
SimpleDateFormat sdf = new SimpleDateFormat(date);
objectMapper.setDateFormat(sdf);
objectMapper.writeValueAsString(object);
return null;
}
public static String getJson(Object object) throws JsonProcessingException {
return getJson(object,"yy-MM-dd HH:mm:ss");
}
}
相關文章
- 利用JAVA實現發牌-->洗牌-->理牌的過程(話不多說直接上程式碼)Java
- 聽話但不多
- 好的程式碼可以自己說話!
- 碼農很多,但程式設計師並不多......程式設計師
- 人狠話不多,細說大牛直播SDK之RTMP播放器和RTSP播放器播放器
- 35行python程式碼教你向ta說情話Python
- SpringBoot 整合 SpringSecurity + MySQL + JWT 附原始碼,廢話不多直接盤Spring BootGseMySqlJWT原始碼
- 圖解 Redis | 不多說了,這就是 RDB 快照圖解Redis
- python3 連線sqlite例項,直接上程式碼吧PythonSQLite
- DateUtils Android時間工具類Android
- [程式碼會說話] 原創技術視訊第二週小結
- Python實戰專案:打乒乓(原始碼分享)(文章較短,直接上程式碼)Python原始碼
- 話說程式設計師的職業生涯程式設計師
- 對程式設計師說點實在話程式設計師
- 程式設計師常說的11句話程式設計師
- 一個女程式設計師有話說程式設計師
- Kotlin進階:動畫程式碼太醜,用DSL動畫庫拯救,像說話一樣寫程式碼喲!Kotlin動畫
- 白話說框架框架
- 話說快取快取
- 程式設計師,請停止說這20句話程式設計師
- 萬能碼用實力說話(安全掃碼專業委員會)
- 跟UI好好說話UI
- 讓Java說話! (轉)Java
- 接上節我們來了解了解多程式的一些基礎程式 / 執行緒 / 多程式 / 父程式 / 子程式 / 會話 / 控制終端等執行緒會話
- 利用橋接上網橋接
- 說透程式碼評審
- 論跟程式設計師談話的技巧:千萬不要跟程式設計師說,你的程式碼有bug程式設計師
- 網路電話應用程式:WatsGo for Mac v8.3.1直裝版GoMac
- defineProperty 和 Proxy區別(直接上結論有一句廢話你打我)
- 程式設計師最常說的9句話,精準!程式設計師
- 話說C#程式設計師人手一個ORMC#程式設計師ORM
- 程式設計師最喜歡說的20句話程式設計師
- 土味情話戀愛話術小程式原始碼原始碼
- 反直覺SQL舉例說明SQL
- 聽,是版本在說話
- 為Java說句公道話Java
- 電話本系統python程式碼Python
- 程式碼重構--大話重構