📄 dateutil.java
字号:
package com.webpublish.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Vector;
import java.util.Locale;
import com.webpublish.util.StringUtils;
public class DateUtil {
/**
* @param args
*/
public static final long millisInDay = 86400000;
// some static date formats
private static SimpleDateFormat[] mDateFormats = loadDateFormats();
private static final SimpleDateFormat mFormat8chars = new SimpleDateFormat(
"yyyyMMdd");
private static final SimpleDateFormat mFormatIso8601Day = new SimpleDateFormat(
"yyyy-MM-dd");
private static final SimpleDateFormat mFormatIso8601Daytime = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
private static final SimpleDateFormat mFormatIso8601Nowtime = new SimpleDateFormat(
"HH:mm:ss");
private static final SimpleDateFormat mFormatRfc822 = new SimpleDateFormat(
"EEE, dd MMM yyyy HH:mm:ss Z", Locale.US);
private static SimpleDateFormat[] loadDateFormats() {
SimpleDateFormat[] temp = {
new SimpleDateFormat("dd MMM yyyy HH:mm:ss.SSS"),
new SimpleDateFormat("yy-MM-dd HH:mm:ss.SSS"),
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"),
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"), // standard
// Timestamp.toString()
// results
new SimpleDateFormat("MM-dd-yy HH:mm:ss"),
new SimpleDateFormat("MM-dd-yyyy HH:mm:ss"),
new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"),
new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy") };
return temp;
}
// -----------------------------------------------------------------------
/**
* Gets the array of SimpleDateFormats that DateUtil knows about.
*/
private static SimpleDateFormat[] getFormats() {
return mDateFormats;
}
// -----------------------------------------------------------------------
// returns full timestamp format
public static java.text.SimpleDateFormat defaultTimestampFormat() {
return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
}
// -----------------------------------------------------------------------
/**
* Returns a string the represents the passed-in date parsed according to
* the passed-in format. Returns an empty string if the date or the format
* is null.
*/
public static String format(Date aDate, SimpleDateFormat aFormat) {
if (aDate == null || aFormat == null) {
return "";
}
synchronized (aFormat) {
return aFormat.format(aDate);
}
}
// -----------------------------------------------------------------------
// convenience method returns long friendly formatted timestamp
public static String format8chars(Date date) {
return DateUtil.format(date, mFormat8chars);
// return 20060126
}
// -----------------------------------------------------------------------
/**
* Tries to take the passed-in String and format it as a date string in the
* the passed-in format.
*/
public static String formatDateString(String aString,
SimpleDateFormat aFormat) {
if (StringUtils.isEmpty(aString) || aFormat == null)
return "";
try {
java.sql.Timestamp aDate = parseTimestampFromFormats(aString);
if (aDate != null) {
return DateUtil.format(aDate, aFormat);
}
} catch (Exception e) {
// Could not parse aString.
}
return "";
}
// -----------------------------------------------------------------------
// convenience method returns long friendly formatted timestamp
public static String formatIso8601Day(Date date) {
return DateUtil.format(date, mFormatIso8601Day);
// return 2006-01-26
}
// -----------------------------------------------------------------------
// convenience method returns long friendly formatted timestamp
public static String formatIso8601Daytime(Date date) {
return DateUtil.format(date, mFormatIso8601Daytime);
// return 2006-01-26 10:29:10
}
// -----------------------------------------------------------------------
// convenience method returns long friendly formatted timestamp
public static StringBuffer formatLogtime(String logTime) {
StringBuffer logFormtTime = new StringBuffer();
//System.out.println(logTime.substring(0, 4));
logFormtTime.append(logTime.substring(0, 4));
logFormtTime.append(logTime.substring(5, 7));
logFormtTime.append(logTime.substring(8, 10));
logFormtTime.append(logTime.substring(11, 13));
logFormtTime.append(logTime.substring(14, 16));
logFormtTime.append(logTime.substring(17, 19));
return logFormtTime;
// return 20060126102910
}
// -----------------------------------------------------------------------
// convenience method returns long friendly formatted timestamp
public static String formatIso8601Nowtime(Date date) {
return DateUtil.format(date, mFormatIso8601Nowtime);
// return 10:29:10
}
// -----------------------------------------------------------------------
public static String formatRfc822(Date date) {
return DateUtil.format(date, mFormatRfc822);
}
// -----------------------------------------------------------------------
// convenience method returns minimal date format
public static java.text.SimpleDateFormat get8charDateFormat() {
return DateUtil.mFormat8chars;
}
/**
* Returns a int now to slow time minutes
*/
public static long getBetweenMinutes(String beginDateStr, String nowDateStr) {
long betweenMinute = 0;
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
Date nowDate = df.parse(nowDateStr);
Date beginDate = df.parse(beginDateStr);
betweenMinute = (long) ((nowDate.getTime() - beginDate.getTime())
/ (1000 * 60) + 0.5);
} catch (ParseException e) {
// do nothing because we want to try the next
// format if current one fails
}
return betweenMinute;
}
// -----------------------------------------------------------------------
/**
* Returns a Date set to the last possible millisecond of the day, just
* before midnight. If a null day is passed in, a new Date is created.
* midnight (00m 00h 00s)
*/
public static Date getEndOfOverday(Date day) {
return getEndOfOverday(day, Calendar.getInstance());
}
public static Date getEndOfOverday(Date day, Calendar cal) {
if (day == null)
day = new Date();
cal.setTime(day);
cal.add(Calendar.DATE, -1);
cal.set(Calendar.HOUR_OF_DAY, cal.getMaximum(Calendar.HOUR_OF_DAY));
cal.set(Calendar.MINUTE, cal.getMaximum(Calendar.MINUTE));
cal.set(Calendar.SECOND, cal.getMaximum(Calendar.SECOND));
cal.set(Calendar.MILLISECOND, cal.getMaximum(Calendar.MILLISECOND));
return cal.getTime();
}
// -----------------------------------------------------------------------
/**
* Returns a Date set to the last possible millisecond of the day, just
* before midnight. If a null day is passed in, a new Date is created.
* midnight (00m 00h 00s)
*/
public static Date getEndOfDay(Date day) {
return getEndOfDay(day, Calendar.getInstance());
}
public static Date getEndOfDay(Date day, Calendar cal) {
if (day == null)
day = new Date();
cal.setTime(day);
cal.set(Calendar.HOUR_OF_DAY, cal.getMaximum(Calendar.HOUR_OF_DAY));
cal.set(Calendar.MINUTE, cal.getMaximum(Calendar.MINUTE));
cal.set(Calendar.SECOND, cal.getMaximum(Calendar.SECOND));
cal.set(Calendar.MILLISECOND, cal.getMaximum(Calendar.MILLISECOND));
return cal.getTime();
}
/**
* Returns a Date set just to Noon, to the closest possible millisecond of
* the day. If a null day is passed in, a new Date is created. nnoon (00m
* 12h 00s)
*/
public static Date getNoonOfDay(Date day, Calendar cal) {
if (day == null)
day = new Date();
cal.setTime(day);
cal.set(Calendar.HOUR_OF_DAY, 12);
cal.set(Calendar.MINUTE, cal.getMinimum(Calendar.MINUTE));
cal.set(Calendar.SECOND, cal.getMinimum(Calendar.SECOND));
cal.set(Calendar.MILLISECOND, cal.getMinimum(Calendar.MILLISECOND));
return cal.getTime();
}
/**
* Returns a Date set just to Noon, to the closest possible millisecond of
* the day. If a null day is passed in, a new Date is created. nnoon (00m
* 12h 00s)
*/
public static String getPubDate(String lastDateStr) {
String pubDate = null;
String nowDay = formatIso8601Day(new Date());
pubDate = nowDay + " " + lastDateStr;
StringUtils.SBCchange(pubDate);
return pubDate;
}
// -----------------------------------------------------------------------
/**
* Returns a Date set to the first possible millisecond of the day, just
* after midnight. If a null day is passed in, a new Date is created.
* midnight (00m 00h 00s)
*/
public static Date getStartOfDay(Date day) {
return getStartOfDay(day, Calendar.getInstance());
}
/**
* Returns a Date set to the first possible millisecond of the day, just
* after midnight. If a null day is passed in, a new Date is created.
* midnight (00m 00h 00s)
*/
public static Date getStartOfDay(Date day, Calendar cal) {
if (day == null)
day = new Date();
cal.setTime(day);
cal.set(Calendar.HOUR_OF_DAY, cal.getMinimum(Calendar.HOUR_OF_DAY));
cal.set(Calendar.MINUTE, cal.getMinimum(Calendar.MINUTE));
cal.set(Calendar.SECOND, cal.getMinimum(Calendar.SECOND));
cal.set(Calendar.MILLISECOND, cal.getMinimum(Calendar.MILLISECOND));
return cal.getTime();
}
// -----------------------------------------------------------------------
/**
* Returns a Date set to the last possible millisecond of the day, just
* before midnight. If a null day is passed in, a new Date is created.
* midnight (00m 00h 00s)
*/
public static Date getStartOfNextday(Date day) {
return getStartOfNextday(day, Calendar.getInstance());
}
public static Date getStartOfNextday(Date day, Calendar cal) {
if (day == null)
day = new Date();
cal.setTime(day);
cal.add(Calendar.DATE, 1);
cal.set(Calendar.HOUR_OF_DAY, cal.getMinimum(Calendar.HOUR_OF_DAY));
cal.set(Calendar.MINUTE, cal.getMinimum(Calendar.MINUTE));
cal.set(Calendar.SECOND, cal.getMinimum(Calendar.SECOND));
cal.set(Calendar.MILLISECOND, cal.getMinimum(Calendar.MILLISECOND));
return cal.getTime();
}
public static Vector getTimerValue(String strTimer) {
Vector TimerItem = new Vector();
//System.out.println(strTimer);
TimerItem.addElement(strTimer.substring(0, 2));
TimerItem.addElement(strTimer.substring(3, 5));
TimerItem.addElement(strTimer.substring(6, 8));
return TimerItem;
}
public static Vector getTimerValueFull(String strTimer) {
Vector TimerItem = new Vector();
//System.out.println(strTimer);
TimerItem.addElement(strTimer.substring(0, 4));
TimerItem.addElement(strTimer.substring(5, 7));
TimerItem.addElement(strTimer.substring(8, 10));
TimerItem.addElement(strTimer.substring(11, 13));
TimerItem.addElement(strTimer.substring(14, 16));
TimerItem.addElement(strTimer.substring(17, 19));
return TimerItem;
}
// -----------------------------------------------------------------------
/**
* Returns true if endDate is after startDate or if startDate equals endDate
* or if they are the same date. Returns false if either value is null.
*/
public static boolean isValidDateRange(Date startDate, Date endDate) {
return isValidDateRange(startDate, endDate, true);
}
// -----------------------------------------------------------------------
/**
* Returns true if endDate is after startDate or if startDate equals
* endDate. Returns false if either value is null. If equalOK, returns true
* if the dates are equal.
*/
public static boolean isValidDateRange(Date startDate, Date endDate,
boolean equalOK) {
// false if either value is null
if (startDate == null || endDate == null) {
return false;
}
if (equalOK) {
// true if they are equal
if (startDate.equals(endDate)) {
return true;
}
}
// true if endDate after startDate
if (endDate.after(startDate)) {
return true;
}
return false;
}
// -----------------------------------------------------------------------
/**
* Returns a Date using the passed-in string and format. Returns null if the
* string is null or empty or if the format is null. The string must match
* the format.
*/
public static Date parse(String aValue, SimpleDateFormat aFormat)
throws ParseException {
if (StringUtils.isEmpty(aValue) || aFormat == null) {
return null;
}
return aFormat.parse(aValue);
}
// -----------------------------------------------------------------------
public static Date parseFromFormats(String aValue) {
if (StringUtils.isEmpty(aValue))
return null;
// get DateUtil's formats
SimpleDateFormat formats[] = DateUtil.getFormats();
if (formats == null)
return null;
// iterate over the array and parse
Date myDate = null;
for (int i = 0; i < formats.length; i++) {
try {
myDate = DateUtil.parse(aValue, formats[i]);
// if (myDate instanceof Date)
return myDate;
} catch (Exception e) {
// do nothing because we want to try the next
// format if current one fails
}
}
// haven't returned so couldn't parse
return null;
}
// -----------------------------------------------------------------------
public static java.sql.Timestamp parseTimestampFromFormats(String aValue) {
if (StringUtils.isEmpty(aValue))
return null;
// call the regular Date formatter
Date myDate = DateUtil.parseFromFormats(aValue);
if (myDate != null)
return new java.sql.Timestamp(myDate.getTime());
return null;
}
public static void main(String[] args) {
System.out.println(formatLogtime("2006-01-01 01:00:00"));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -