给自己的一些工具类关于时间的判断和空对象判断
/*
* Created on 2009-9-17
*
* @author Peter_Ke
*/
package com.peter.apps.eshidx.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* @author Peter_Ke
* hleper classes
* call me if you want to change the code
* Created on 2009-9-17
*/
public class miscUtil {
public static java.util.Date toDate(String dateTime) {
// dateTime must have one space between the date and time...
String date = dateTime.substring(0, dateTime.indexOf(" "));
String time = dateTime.substring(dateTime.indexOf(" ") + 1);
return toDate(date, time);
}
public static java.util.Date toDate(String date, String time) {
if (date == null || time == null) return null;
String month;
String day;
String year;
String hour;
String minute;
String second;
int dateSlash1 = date.indexOf("-");
int dateSlash2 = date.lastIndexOf("-");
if (dateSlash1 <= 0 || dateSlash1 == dateSlash2) return null;
int timeColon1 = time.indexOf(":");
int timeColon2 = time.lastIndexOf(":");
int ms_index = time.lastIndexOf(".");
if (timeColon1 <= 0) return null;
year = date.substring(0, dateSlash1);
month = date.substring(dateSlash1 + 1, dateSlash2);
day = date.substring(dateSlash2 + 1);
hour = time.substring(0, timeColon1);
if (timeColon1 == timeColon2) {
minute = time.substring(timeColon1 + 1);
second = "0";
} else {
minute = time.substring(timeColon1 + 1, timeColon2);
if(ms_index<0)
second = time.substring(timeColon2 + 1);
else
second = time.substring(timeColon2 + 1 , ms_index) ;
}
return toDate(month, day, year, hour, minute, second);
}
public static java.util.Date toDate(int month, int day, int year, int hour, int minute, int second) {
Calendar calendar = Calendar.getInstance();
try {
calendar.set(year, month - 1, day, hour, minute, second);
} catch (Exception e) {
return null;
}
return new java.util.Date(calendar.getTime().getTime());
}
public static java.util.Date toDate(String monthStr, String dayStr, String yearStr, String hourStr,
String minuteStr, String secondStr) {
int month, day, year, hour, minute, second;
try {
month = Integer.parseInt(monthStr);
day = Integer.parseInt(dayStr);
year = Integer.parseInt(yearStr);
hour = Integer.parseInt(hourStr);
minute = Integer.parseInt(minuteStr);
second = Integer.parseInt(secondStr);
} catch (Exception e) {
return null;
}
return toDate(month, day, year, hour, minute, second);
}
public static long compareTo(Date start,Date end){
//return -N , 0 , N for compart two Date
return (start.getTime() - end.getTime() )/(1000*60*60*24);
}
public static String getDateBegin(String date){
return date+" 00:00:00";
}
public static String getDateEnd(String date){
return date+" 23:59:59";
}
public static Date getMonthStart(Date datePatter) {
Calendar _cal = Calendar.getInstance();
_cal.setTime(datePatter);
_cal.set(Calendar.DAY_OF_MONTH, 1);
return _cal.getTime();
}
public static Date getMonthEnd(Date datePatter) {
Calendar _cal = Calendar.getInstance();
_cal.setTime(datePatter);
_cal.set(Calendar.DAY_OF_MONTH, _cal.getActualMaximum(Calendar.DAY_OF_MONTH));
return _cal.getTime();
}
public static void printSimpleMap(Map map){
for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) {
Map.Entry element = (Map.Entry) iter.next();
Object key = element.getKey();
Object value = element.getValue();
System.out.println("key=value: "+key+"="+value);
}
}
public static Date combineDateWithTimeString(Date date,String time){
if (date==null||time==null||time.length()==0){
System.out.println("error of null input in combineDate");
return null;
}
if (time.indexOf(':')<0){
System.out.println("error of time input format in combineDate");
return null;
}
String[] timeSplit = time.split(":");
String hour = (String)timeSplit[0];
String minute = (String)timeSplit[1];
Integer h=Integer.valueOf(hour);
Integer min=Integer.valueOf(minute);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY,h.intValue());
calendar.set(Calendar.MINUTE,min.intValue());
Date result = new Date(calendar.getTimeInMillis());
return result;
}
public static List getYearList(){
List yearList = new ArrayList();
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.MARCH,-1);
Date today = cal.getTime();
yearList.add(new Integer(today.getYear()+1900));
cal.setTime(new Date(102,0,1));
while(cal.getTime().getYear()<today.getYear()){
yearList.add(new Integer(cal.getTime().getYear()+1900));
cal.add(Calendar.YEAR,1);
}
return yearList;
}
public static List getMonthList(){
List monthList = new ArrayList();
int month;
Date today = new Date();
if(today.getMonth()==0){
month=12;
}else{
month = today.getMonth();
}
monthList.add(new Integer(month));
for (int i = 1; i <= 12; i++) {
if(i!=month){
monthList.add(new Integer(i));
}
}
return monthList;
}
public static int getCurrentMonth(){
Calendar c = Calendar.getInstance();
int month = c.get(Calendar.MONTH)+1;
return month;
}
public static int getLastMonth(){
Calendar c = Calendar.getInstance();
int month = c.get(Calendar.MONTH);
if(month==0){
month=12;
}
return month;
}
public static int getCurrentYear(){
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
return year;
}
public static int getLastYear(){
return getCurrentYear()-1;
}
public static boolean isEmpty(Map map){
return (map == null||map.isEmpty());
}
public static boolean isEmpty(String str){
return ((str == null)||(str.trim().length() == 0));
}
public static boolean isEmpty(Collection c){
return ((c == null)||(c.size() == 0));
}
public static boolean isEmpty(Object[] a){
return ((a == null)||(a.length == 0));
}
}
再来个全的time util
/*
* $Id: UtilDateTime.java,v 1.1 2009/04/28 06:38:23 Exp $
*
* Copyright (c) 2001 The Open For Business Project - www.ofbiz.org
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
* OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
* THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package com.peter.apps.util;
import java.util.*;
import java.text.*;
/**
* Utility class for handling java.util.Date, the java.sql data/time classes and related information
*
*@author <a href="mailto:jonesde@ofbiz.org">David E. Jones</a>
*@author <a href="mailto:jaz@zsolv.com">Andy Zeneski</a>
*@created May 21, 2001
*@version 1.1
*/
public class UtilDateTime {
/** Return a Timestamp for right now
* @return Timestamp for right now
*/
public static java.sql.Timestamp nowTimestamp() {
return new java.sql.Timestamp(System.currentTimeMillis());
}
/** Return a Date for right now
* @return Date for right now
*/
public static java.util.Date nowDate() {
return new java.util.Date();
}
/**
* Return a string formatted as yyyyMMddHHmmss
* @return String formatted for right now
*/
public static String nowDateString() {
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
return df.format(new Date());
}
public static java.sql.Timestamp getDayStart(java.sql.Timestamp stamp) {
return getDayStart(stamp, 0);
}
public static java.sql.Timestamp getDayStart(java.sql.Timestamp stamp, int daysLater) {
Calendar tempCal = Calendar.getInstance();
tempCal.setTime(new java.util.Date(stamp.getTime()));
tempCal.set(tempCal.get(Calendar.YEAR), tempCal.get(Calendar.MONTH), tempCal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
tempCal.set(Calendar.MILLISECOND, 0);
//if (daysLater > 0) tempCal.add(Calendar.DAY_OF_MONTH, daysLater);
tempCal.add(Calendar.DAY_OF_MONTH, daysLater);
return new java.sql.Timestamp(tempCal.getTime().getTime());
}
public static java.sql.Timestamp getNextDayStart(java.sql.Timestamp stamp) {
return getDayStart(stamp, 1);
}
public static java.sql.Timestamp getDayEnd(java.sql.Timestamp stamp) {
return getDayEnd(stamp, 0);
}
public static java.sql.Timestamp getDayEnd(java.sql.Timestamp stamp, int daysLater) {
Calendar tempCal = Calendar.getInstance();
tempCal.setTime(new java.util.Date(stamp.getTime()));
tempCal.set(tempCal.get(Calendar.YEAR), tempCal.get(Calendar.MONTH), tempCal.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
tempCal.set(Calendar.MILLISECOND, 0);
//if (daysLater > 0) tempCal.add(Calendar.DAY_OF_MONTH, daysLater);
tempCal.add(Calendar.DAY_OF_MONTH, daysLater);
return new java.sql.Timestamp(tempCal.getTime().getTime());
}
/** Converts a date String into a java.sql.Date
* @param date The date String: MM/DD/YYYY
* @return A java.sql.Date made from the date String
*/
public static java.sql.Date toSqlDate(String date) {
java.util.Date newDate = toDate(date, "00:00:00");
if (newDate != null)
return new java.sql.Date(newDate.getTime());
else
return null;
}
/** Makes a java.sql.Date from separate Strings for month, day, year
* @param monthStr The month String
* @param dayStr The day String
* @param yearStr The year String
* @return A java.sql.Date made from separate Strings for month, day, year
*/
public static java.sql.Date toSqlDate(String monthStr, String dayStr, String yearStr) {
java.util.Date newDate = toDate(monthStr, dayStr, yearStr, "0", "0", "0");
if (newDate != null)
return new java.sql.Date(newDate.getTime());
else
return null;
}
/** Makes a java.sql.Date from separate ints for month, day, year
* @param month The month int
* @param day The day int
* @param year The year int
* @return A java.sql.Date made from separate ints for month, day, year
*/
public static java.sql.Date toSqlDate(int month, int day, int year) {
java.util.Date newDate = toDate(month, day, year, 0, 0, 0);
if (newDate != null)
return new java.sql.Date(newDate.getTime());
else
return null;
}
/** Converts a time String into a java.sql.Time
* @param time The time String: either HH:MM or HH:MM:SS
* @return A java.sql.Time made from the time String
*/
public static java.sql.Time toSqlTime(String time) {
java.util.Date newDate = toDate("1/1/1970", time);
if (newDate != null)
return new java.sql.Time(newDate.getTime());
else
return null;
}
/** Makes a java.sql.Time from separate Strings for hour, minute, and second.
* @param hourStr The hour String
* @param minuteStr The minute String
* @param secondStr The second String
* @return A java.sql.Time made from separate Strings for hour, minute, and second.
*/
public static java.sql.Time toSqlTime(String hourStr, String minuteStr, String secondStr) {
java.util.Date newDate = toDate("0", "0", "0", hourStr, minuteStr, secondStr);
if (newDate != null)
return new java.sql.Time(newDate.getTime());
else
return null;
}
/** Makes a java.sql.Time from separate ints for hour, minute, and second.
* @param hour The hour int
* @param minute The minute int
* @param second The second int
* @return A java.sql.Time made from separate ints for hour, minute, and second.
*/
public static java.sql.Time toSqlTime(int hour, int minute, int second) {
java.util.Date newDate = toDate(0, 0, 0, hour, minute, second);
if (newDate != null)
return new java.sql.Time(newDate.getTime());
else
return null;
}
/** Converts a date and time String into a Timestamp
* @param dateTime A combined data and time string in the format "MM/DD/YYYY HH:MM:SS", the seconds are optional
* @return The corresponding Timestamp
*/
public static java.sql.Timestamp toTimestamp(String dateTime) {
java.util.Date newDate = toDate(dateTime);
if (newDate != null)
return new java.sql.Timestamp(newDate.getTime());
else
return null;
}
/** Converts a date String and a time String into a Timestamp
* @param date The date String: MM/DD/YYYY
* @param time The time String: either HH:MM or HH:MM:SS
* @return A Timestamp made from the date and time Strings
*/
public static java.sql.Timestamp toTimestamp(String date, String time) {
java.util.Date newDate = toDate(date, time);
if (newDate != null)
return new java.sql.Timestamp(newDate.getTime());
else
return null;
}
/** Makes a Timestamp from separate Strings for month, day, year, hour, minute, and second.
* @param monthStr The month String
* @param dayStr The day String
* @param yearStr The year String
* @param hourStr The hour String
* @param minuteStr The minute String
* @param secondStr The second String
* @return A Timestamp made from separate Strings for month, day, year, hour, minute, and second.
*/
public static java.sql.Timestamp toTimestamp(String monthStr, String dayStr, String yearStr, String hourStr,
String minuteStr, String secondStr) {
java.util.Date newDate = toDate(monthStr, dayStr, yearStr, hourStr, minuteStr, secondStr);
if (newDate != null)
return new java.sql.Timestamp(newDate.getTime());
else
return null;
}
/** Makes a Timestamp from separate ints for month, day, year, hour, minute, and second.
* @param month The month int
* @param day The day int
* @param year The year int
* @param hour The hour int
* @param minute The minute int
* @param second The second int
* @return A Timestamp made from separate ints for month, day, year, hour, minute, and second.
*/
public static java.sql.Timestamp toTimestamp(int month, int day, int year, int hour, int minute, int second) {
java.util.Date newDate = toDate(month, day, year, hour, minute, second);
if (newDate != null)
return new java.sql.Timestamp(newDate.getTime());
else
return null;
}
/** Converts a date and time String into a Date
* @param dateTime A combined data and time string in the format "MM/DD/YYYY HH:MM:SS", the seconds are optional
* @return The corresponding Date
*/
public static java.util.Date toDate(String dateTime) {
// dateTime must have one space between the date and time...
String date = dateTime.substring(0, dateTime.indexOf(" "));
String time = dateTime.substring(dateTime.indexOf(" ") + 1);
return toDate(date, time);
}
/** Converts a date String and a time String into a Date
* @param date The date String: YYYY-MM-DD
* @param time The time String: either HH:MM or HH:MM:SS or HH:MM:SS.s
* @return A Date made from the date and time Strings
*/
public static java.util.Date toDate(String date, String time) {
if (date == null || time == null) return null;
String month;
String day;
String year;
String hour;
String minute;
String second;
int dateSlash1 = date.indexOf("-");
int dateSlash2 = date.lastIndexOf("-");
if (dateSlash1 <= 0 || dateSlash1 == dateSlash2) return null;
int timeColon1 = time.indexOf(":");
int timeColon2 = time.lastIndexOf(":");
int ms_index = time.lastIndexOf(".");
if (timeColon1 <= 0) return null;
year = date.substring(0, dateSlash1);
month = date.substring(dateSlash1 + 1, dateSlash2);
day = date.substring(dateSlash2 + 1);
hour = time.substring(0, timeColon1);
if (timeColon1 == timeColon2) {
minute = time.substring(timeColon1 + 1);
second = "0";
} else {
minute = time.substring(timeColon1 + 1, timeColon2);
if(ms_index<0)
second = time.substring(timeColon2 + 1);
else
second = time.substring(timeColon2 + 1 , ms_index) ;
}
return toDate(month, day, year, hour, minute, second);
}
/** Makes a Date from separate Strings for month, day, year, hour, minute, and second.
* @param monthStr The month String
* @param dayStr The day String
* @param yearStr The year String
* @param hourStr The hour String
* @param minuteStr The minute String
* @param secondStr The second String
* @return A Date made from separate Strings for month, day, year, hour, minute, and second.
*/
public static java.util.Date toDate(String monthStr, String dayStr, String yearStr, String hourStr,
String minuteStr, String secondStr) {
int month, day, year, hour, minute, second;
try {
month = Integer.parseInt(monthStr);
day = Integer.parseInt(dayStr);
year = Integer.parseInt(yearStr);
hour = Integer.parseInt(hourStr);
minute = Integer.parseInt(minuteStr);
second = Integer.parseInt(secondStr);
} catch (Exception e) {
return null;
}
return toDate(month, day, year, hour, minute, second);
}
/** Makes a Date from separate ints for month, day, year, hour, minute, and second.
* @param month The month int
* @param day The day int
* @param year The year int
* @param hour The hour int
* @param minute The minute int
* @param second The second int
* @return A Date made from separate ints for month, day, year, hour, minute, and second.
*/
public static java.util.Date toDate(int month, int day, int year, int hour, int minute, int second) {
Calendar calendar = Calendar.getInstance();
try {
calendar.set(year, month - 1, day, hour, minute, second);
} catch (Exception e) {
return null;
}
return new java.util.Date(calendar.getTime().getTime());
}
/** Makes a date String in the format MM/DD/YYYY from a Date
* @param date The Date
* @return A date String in the format MM/DD/YYYY
*/
public static String toDateString(java.util.Date date) {
if (date == null) return "";
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
int year = calendar.get(Calendar.YEAR);
String monthStr;
String dayStr;
String yearStr;
if (month < 10) {
monthStr = "0" + month;
} else {
monthStr = "" + month;
}
if (day < 10) {
dayStr = "0" + day;
} else {
dayStr = "" + day;
}
yearStr = "" + year;
//Modified by Vanish -- 2003.1.2
return yearStr + "-" + monthStr + "-" + dayStr ;
// return monthStr + "/" + dayStr + "/" + yearStr;
}
/** Makes a time String in the format HH:MM:SS from a Date. If the seconds are 0, then the output is in HH:MM.
* @param date The Date
* @return A time String in the format HH:MM:SS or HH:MM
*/
public static String toTimeString(java.util.Date date) {
if (date == null) return "";
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return (toTimeString(calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND)));
}
/** Makes a time String in the format HH:MM:SS from a separate ints for hour, minute, and second. If the seconds are 0, then the output is in HH:MM.
* @param hour The hour int
* @param minute The minute int
* @param second The second int
* @return A time String in the format HH:MM:SS or HH:MM
*/
public static String toTimeString(int hour, int minute, int second) {
String hourStr;
String minuteStr;
String secondStr;
if (hour < 10) {
hourStr = "0" + hour;
} else {
hourStr = "" + hour;
}
if (minute < 10) {
minuteStr = "0" + minute;
} else {
minuteStr = "" + minute;
}
if (second < 10) {
secondStr = "0" + second;
} else {
secondStr = "" + second;
}
if (second == 0)
return hourStr + ":" + minuteStr;
else
return hourStr + ":" + minuteStr + ":" + secondStr;
}
/** Makes a combined data and time string in the format "MM/DD/YYYY HH:MM:SS" from a Date. If the seconds are 0 they are left off.
* @param date The Date
* @return A combined data and time string in the format "MM/DD/YYYY HH:MM:SS" where the seconds are left off if they are 0.
*/
public static String toDateTimeString(java.util.Date date) {
if (date == null) return "";
String dateString = toDateString(date);
String timeString = toTimeString(date);
if (dateString != null && timeString != null)
return dateString + " " + timeString;
else
return "";
}
/** Makes a Timestamp for the beginning of the month
* @return A Timestamp of the beginning of the month
*/
public static java.sql.Timestamp monthBegin() {
Calendar mth = Calendar.getInstance();
mth.set(Calendar.DAY_OF_MONTH, 1);
mth.set(Calendar.HOUR_OF_DAY, 0);
mth.set(Calendar.MINUTE, 0);
mth.set(Calendar.SECOND, 0);
mth.set(Calendar.AM_PM, Calendar.AM);
return new java.sql.Timestamp(mth.getTime().getTime());
}
public static java.sql.Timestamp getDayBegin(String date) throws ParseException{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date fieldDate = sdf.parse(date);
return new java.sql.Timestamp(fieldDate.getTime());
}
public static java.sql.Timestamp getDayEnd(String date) throws ParseException{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date fieldDate = sdf.parse(date);
return getDayEnd(new java.sql.Timestamp(fieldDate.getTime()));
}
public static long compareTo(Date start,Date end){
//return -N , 0 , N for compart two Date
return (start.getTime() - end.getTime() )/(1000*60*60*24);
}
public static String getDateBegin(String date){
return date+" 00:00:00";
}
public static String getDateEnd(String date){
return date+" 23:59:59";
}
public static Date getBeforeDay(Date date,int days){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE,days);
Date alertTime = cal.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date fieldDate = null;
try {
fieldDate = sdf.parse(alertTime.toLocaleString());
} catch (ParseException e) {
e.printStackTrace();
}
return fieldDate;
}
public static int get(Date startDate,Date endDate){
return (int)((startDate.getTime()-endDate.getTime())/(60*1000));
}
public static Date getStartDayOfWeek(Date datePatter) {
Calendar _cal = Calendar.getInstance();
_cal.setTime(datePatter);
if (_cal.get(_cal.DAY_OF_WEEK) == _cal.SUNDAY) {
_cal.add(_cal.DAY_OF_YEAR, -6);
return _cal.getTime();
} else if(_cal.get(_cal.DAY_OF_WEEK) == _cal.MONDAY) {
return datePatter;
}else {
_cal.add(_cal.DAY_OF_YEAR, (_cal.MONDAY - _cal.get(_cal.DAY_OF_WEEK)));
return _cal.getTime();
}
}
public static Date getEndDayOfWeek(Date datePatter) {
Calendar _cal = Calendar.getInstance();
_cal.setTime(datePatter);
if (_cal.get(_cal.DAY_OF_WEEK) == _cal.SUNDAY) {
return datePatter;
} else {
_cal.add(_cal.DAY_OF_YEAR, (8 - _cal.get(_cal.DAY_OF_WEEK)));
return _cal.getTime();
}
}
public static Date getMonthStart(Date datePatter) {
Calendar _cal = Calendar.getInstance();
_cal.setTime(datePatter);
_cal.set(_cal.DAY_OF_MONTH, 1);
return _cal.getTime();
}
public static Date getMonthEnd(Date datePatter) {
Calendar _cal = Calendar.getInstance();
_cal.setTime(datePatter);
_cal.set(_cal.DAY_OF_MONTH, _cal.getActualMaximum(_cal.DAY_OF_MONTH));
return _cal.getTime();
}
}