package com.pnikosis.html2markdown;
import java.text.DateFormat;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.StringTokenizer;
/**
* DateUtil
*
* @author robin
* @author refactor by Sevan Joe
*/
public class DateUtil {
public DateUtil() {
}
/**
* return current date value in format: yyyy-MM-dd
*
* @return String value
*/
public static String getNowDate() {
return dateToStringWithPattern(new Date(), "yyyy-MM-dd");
}
/**
* return current time value in format: yyyy-MM-dd HH:mm:ss:sss
*
* @return String value
*/
public static String getNowTime() {
return dateToStringWithPattern(new Date(), "yyyy-MM-dd HH:mm:ss:sss");
}
/**
* return time value of specified date in format: yyyy-MM-dd HH:mm
*
* @param date the specified date to convert
* @return String value
*/
public static String dateToString(Date date) {
return dateToStringWithPattern(date, "yyyy-MM-dd HH:mm");
}
/**
* return date value only of specified date in format: yyyy-MM-dd
*
* @param date the specified date to convert
* @return String value
*/
public static String dateToShortString(Date date) {
return dateToStringWithPattern(date, "yyyy-MM-dd");
}
/**
* return time value of specified date in format: yyyy-MM-dd HH:mm:ss
*
* @param date the specified date to convert
* @return String value
*/
public static String dateToLongString(Date date) {
return dateToStringWithPattern(date, "yyyy-MM-dd HH:mm:ss");
}
/**
* return time value only of specified date in format: HH:mm:ss
*
* @param date the specified date to convert
* @return String value
*/
public static String dateToTimeString(Date date) {
return dateToStringWithPattern(date, "HH:mm:ss");
}
/**
* return time value of specified date
*
* @param date the specified date to convert
* @param pattern time format
* @return String value
*/
public static String dateToStringWithPattern(Date date, String pattern) {
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
return simpleDateFormat.format(date);
} catch (Exception e) {
return "";
}
}
/**
* split date value of specified date by '-'
*
* @param date the specified date to convert
* @return String[] value
*/
public static String[] SplitDate(Date date) {
String s = dateToShortString(date);
String[] temp = new String[3];
StringTokenizer stringTokenizer = new StringTokenizer(s, "-");
int i = 0;
while (stringTokenizer.hasMoreTokens()) {
temp[i] = stringTokenizer.nextToken();
i++;
}
return temp;
}
/**
* return string value of specified date in format: yyyy-MM-ddTHH:mm:ss
*
* @param date the specified date to convert
* @return String value
*/
public static String dateToBOMCStringDate(Date date) {
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String string = simpleDateFormat.format(date);
string = StringToBOMCStringDate(string);
return string;
} catch (Exception e) {
return "";
}
}
/**
* return handled string value of date
*
* @param date string value to convert
* @return String value
*/
public static String StringToBOMCStringDate(String date) {
return date.replace(" ", "T");
}
/**
* return date value of specified string value in format: yyyy-MM-dd HH:mm:ss
*
* @param string string value to convert
* @return Date value
*/
public static Date stringToDate(String string) {
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return simpleDateFormat.parse(string);
} catch (Exception e) {
return null;
}
}
/**
* return date value of specified string value in format: HH:mm:ss
*
* @param string string value to convert
* @return Date value
*/
public static Date timeStringToDate(String string) {
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
return simpleDateFormat.parse(string);
} catch (Exception e) {
return null;
}
}
/**
* return date value of specified string value in format: yyyy-MM-dd
*
* @param string string value to convert
* @return Date value
*/
public static Date stringToShortDate(String string) {
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
ParsePosition parsePosition = new ParsePosition(0);
return simpleDateFormat.parse(string, parsePosition);
} catch (Exception e) {
return null;
}
}
/**
* return date value of specified string value in format: yyyyMMdd
*
* @param string string value to convert
* @return Date value
*/
public static Date stringToShortNoDate(String string) {
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
ParsePosition parsePosition = new ParsePosition(0);
return simpleDateFormat.parse(string, parsePosition);
} catch (Exception e) {
return null;
}
}
/**
* return date value of now
*
* @return Date value
*/
public static Date getNow() {
return new Date();
}
/**
* return unix timestamp of now
*
* @return long value
*/
public static long getCurrentTimestamp() {
return (new Date()).getTime();
}
/**
* return unix timestamp of specified string value in format: yyyy-MM-dd
*
* @param string string value to convert
* @return long value
*/
public static long getTimestamp(String string) {
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
ParsePosition parsePosition = new ParsePosition(0);
Date date = simpleDateFormat.parse(string, parsePosition);
return date.getTime();
} catch (Exception e) {
return -1;
}
}
/**
* return unix timestamp of specified string value in format: yyyy-MM-dd HH:mm:ss
*
* @param string string value to convert
* @return long value
*/
public static long getStringToTimestamp(String string) {
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
ParsePosition parsePosition = new ParsePosition(0);
Date date = simpleDateFormat.parse(string, parsePosition);
return date.getTime();
} catch (Exception e) {
return -1;
}
}
/**
* return the time difference from a specified time to now in minutes
*
* @param timestamp unix timestamp of a specified time
* @return long value
*/
public static long getOffMinutes(long timestamp) {
return getOffMinutes(timestamp, System.currentTimeMillis());
}
/**
* return the time difference from two specified time
*
* @param left unix timestamp of the first specified time
* @param right unix timestamp of the second specified time
* @return long value
*/
public static long getOffMinutes(long left, long right) {
return (left - right) / 60000L;
}
/**
* return string value of specified unix timestamp
*
* @param timestamp unix timestamp
* @return String value
*/
public static String LongToDateString(long timestamp) {
DateFormat dateFormat;
Date date;
try {
dateFormat = DateFormat.getDateTimeInstance();
String dateString = String.valueOf(timestamp);
date = new Date(Long.parseLong(dateString));
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
return dateFormat.format(date);
}
/**
* return date's weekday value of specified string value in format: yyyy-MM-dd Date first =
* DateUtil.getMonday(today,Calendar.SUNDAY); Date last = DateUtil.getMonday(today,Calendar.SATURDAY);
*
* @param dateString String value of date
* @param weekDay int index of weekday to get, first Calendar.SUNDAY, last Calendar.SATURDAY
* @return Date value
*/
public static Date getWeekDay(String dateString, int weekDay) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = simpleDateFormat.parse(dateString);
} catch (Exception e) {
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();
if (date != null) {
calendar.setTime(date);
}
// DAY_OF_WEEK
// Field number for get and set indicating the day of the week. This field takes values
// SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, and SATURDAY
calendar.set(Calendar.DAY_OF_WEEK, weekDay);
calendar.add(Calendar.DATE, 1);
return calendar.getTime();
}
/**
* return the first day of the date's month of specified string value in format: yyyy-MM
*
* @param dateString String value of date
* @return Date value
*/
public static Date getMonthFirstDay(String dateString) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
Date date = null;
try {
date = simpleDateFormat.parse(dateString);
} catch (Exception e) {
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();
if (date != null) {
calendar.setTime(date);
}
calendar.add(Calendar.DAY_OF_MONTH, 0);
return calendar.getTime();
}
/**
* return the last day of the date's month of specified string value in format: yyyy-MM
*
* @param dateString String value of date
* @return Date value
*/
public static Date getMonthLastDay(String dateString) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
Date date = null;
try {
date = simpleDateFormat.parse(dateString);
} catch (Exception e) {
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();
if (date != null) {
calendar.setTime(date);
}
calendar.add(Calendar.MONTH, 1);
calendar.add(Calendar.DATE, -1);
return calendar.getTime();
}
/**
* return the first day of the date's year of specified string value in format: yyyy
*
* @param dateString String value of date
* @return Date value
*/
public static Date getYearFirstDay(String dateString) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy");
Date date = null;
try {
date = simpleDateFormat.parse(dateString);
} catch (Exception e) {
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();
if (date != null) {
calendar.setTime(date);
}
calendar.add(Calendar.DAY_OF_YEAR, 0);
return calendar.getTime();
}
/**
* return the last day of the date's year of specified string value in format: yyyy
*
* @param dateString String value
* @return Date value
*/
public static Date getYearLastDay(String dateString) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy");
Date date = null;
try {
date = simpleDateFormat.parse(dateString);
} catch (Exception e) {
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();
if (date != null) {
calendar.setTime(date);
}
calendar.add(Calendar.YEAR, 1);
calendar.add(Calendar.DATE, -1);
return calendar.getTime();
}
/**
* return date value with specified field value
*
* @param date Date value
* @param field int Date filed, such as Calendar.DAY_OF_MONTH
* @param amount int the value of the field to set
* @return Date value
*/
public static Date getDate(Date date, int field, int amount) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(field, amount);
return calendar.getTime();
}
}