Java Timestamp Create toSQLTimestamp(Object object, Object oDefault)

Here you can find the source of toSQLTimestamp(Object object, Object oDefault)

Description

to SQL Timestamp

License

Apache License

Declaration

public static java.sql.Timestamp toSQLTimestamp(Object object, Object oDefault) 

Method Source Code


//package com.java2s;
/*// w w  w .j  a  va 2  s. co m
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.lang.reflect.Array;

import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.GregorianCalendar;

import java.util.Iterator;

import java.util.Map;

public class Main {
    public static java.sql.Timestamp toSQLTimestamp(Object object, Object oDefault) {
        if (object == null) {
            if (oDefault == null)
                return null;
            return toSQLTimestamp(oDefault, null);
        }
        if (object instanceof java.sql.Timestamp) {
            return (java.sql.Timestamp) object;
        }
        if (object instanceof java.util.Date) {
            return new java.sql.Timestamp(((java.util.Date) object).getTime());
        }
        if (object instanceof java.util.Calendar) {
            return new java.sql.Timestamp(((java.util.Calendar) object).getTimeInMillis());
        }
        if (object instanceof Long) {
            return new java.sql.Timestamp(((Long) object).longValue());
        }
        if (object instanceof Number) {
            int iDate = ((Number) object).intValue();
            if (iDate < 10000)
                return toSQLTimestamp(oDefault, null);
            return new java.sql.Timestamp(intToLongDate(iDate));
        }
        if (object instanceof Collection) {
            return toSQLTimestamp(getFirst(object), oDefault);
        }
        if (object.getClass().isArray()) {
            return toSQLTimestamp(getFirst(object), oDefault);
        }
        if (object instanceof Map) {
            return toSQLTimestamp(oDefault, null);
        }
        String sValue = object.toString();
        if (sValue == null || sValue.length() == 0)
            return toSQLTimestamp(oDefault, null);
        Date time = stringToTime(sValue);
        if (time == null)
            return toSQLTimestamp(oDefault, null);
        return new java.sql.Timestamp(time.getTime());
    }

    public static long intToLongDate(int iDate) {
        if (iDate < 10000)
            return System.currentTimeMillis();
        int iYear = iDate / 10000;
        int iMonth = (iDate % 10000) / 100;
        int iDay = (iDate % 10000) % 100;
        Calendar calendar = new GregorianCalendar(iYear, iMonth - 1, iDay);
        return calendar.getTimeInMillis();
    }

    public static Object getFirst(Object object) {
        if (object == null)
            return null;
        if (object instanceof Collection) {
            Collection collection = (Collection) object;
            Iterator iterator = collection.iterator();
            if (iterator.hasNext())
                return iterator.next();
        } else if (object.getClass().isArray()) {
            int length = Array.getLength(object);
            if (length == 0)
                return null;
            return Array.get(object, 0);
        }
        return null;
    }

    public static String toString(Object object, String sDefault) {
        if (object == null)
            return sDefault;
        if (object instanceof String) {
            return (String) object;
        }
        if (object instanceof java.util.Date) {
            return longDateToString(((java.util.Date) object).getTime(), false);
        }
        if (object instanceof java.util.Calendar) {
            return longDateToString(((java.util.Calendar) object).getTimeInMillis(), false);
        }
        if (object instanceof Collection) {
            return toString(getFirst(object), sDefault);
        }
        if (object instanceof Map) {
            return sDefault;
        }
        if (object instanceof byte[]) {
            return new String((byte[]) object);
        }
        if (object instanceof char[]) {
            return new String((char[]) object);
        }
        return object.toString();
    }

    public static String toString(Object object, String sDefault, int iMaxLength) {
        String sResult = toString(object, sDefault);
        if (sResult != null && iMaxLength > 0 && sResult.length() > iMaxLength) {
            return sResult.substring(0, iMaxLength);
        }
        return sResult;
    }

    public static java.util.Date stringToTime(String sTime) {
        if (sTime == null || sTime.length() == 0)
            return null;
        String sNorm = normalizeStringTime(sTime);
        if (sNorm == null || sNorm.length() < 4)
            return null;
        int iHH = 0;
        int iMM = 0;
        int iSS = 0;
        try {
            iHH = Integer.parseInt(sNorm.substring(0, 2));
        } catch (Throwable th) {
        }
        try {
            iMM = Integer.parseInt(sNorm.substring(2, 4));
        } catch (Throwable th) {
        }
        if (sNorm.length() > 5) {
            try {
                iSS = Integer.parseInt(sNorm.substring(4, 6));
            } catch (Throwable th) {
            }
        }
        Calendar calendar = Calendar.getInstance();
        if (sTime.length() > 10 || sNorm.equals("000000")) {
            String sDate = normalizeStringDate(sTime);
            if (sDate != null && sDate.length() > 0) {
                int iDate = 0;
                try {
                    iDate = Integer.parseInt(sDate);
                    int iYear = iDate / 10000;
                    int iMonth = (iDate % 10000) / 100;
                    int iDay = (iDate % 10000) % 100;
                    calendar.set(Calendar.YEAR, iYear);
                    calendar.set(Calendar.MONTH, iMonth - 1);
                    calendar.set(Calendar.DATE, iDay);
                } catch (Throwable th) {
                }
            }
        }
        calendar.set(Calendar.HOUR_OF_DAY, iHH);
        calendar.set(Calendar.MINUTE, iMM);
        calendar.set(Calendar.SECOND, iSS);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    public static String longDateToString(long lDateTime, boolean boAddTime) {
        Calendar cal = Calendar.getInstance();
        cal.setTimeInMillis(lDateTime);
        int iYear = cal.get(java.util.Calendar.YEAR);
        int iMonth = cal.get(java.util.Calendar.MONTH) + 1;
        int iDay = cal.get(java.util.Calendar.DATE);
        String sTime = "";
        if (boAddTime) {
            int iHH = cal.get(Calendar.HOUR_OF_DAY);
            int iMM = cal.get(Calendar.MINUTE);
            int iSS = cal.get(Calendar.SECOND);
            String sHH = iHH < 10 ? "0" + iHH : String.valueOf(iHH);
            String sMM = iMM < 10 ? "0" + iMM : String.valueOf(iMM);
            String sSS = iSS < 10 ? "0" + iSS : String.valueOf(iSS);
            sTime = " " + sHH + ":" + sMM + ":" + sSS;
        }
        String sMonth = iMonth < 10 ? "0" + iMonth : String.valueOf(iMonth);
        String sDay = iDay < 10 ? "0" + iDay : String.valueOf(iDay);
        return iYear + "-" + sMonth + "-" + sDay + sTime;
    }

    public static String normalizeStringTime(String sValue) {
        if (sValue == null)
            return "000000";
        sValue = sValue.trim();
        if (sValue.length() == 0)
            return "000000";
        int iFirstSep = sValue.indexOf(':');
        if (iFirstSep < 0) {
            iFirstSep = sValue.indexOf(',');
            if (iFirstSep <= 0) {
                iFirstSep = sValue.indexOf('.');
                if (iFirstSep <= 0) {
                    try {
                        Integer.parseInt(sValue);
                    } catch (Throwable th) {
                        return "000000";
                    }
                    if (sValue.length() > 6)
                        return sValue.substring(0, 6);
                    if (sValue.length() == 1)
                        sValue = "000" + sValue;
                    if (sValue.length() == 2)
                        sValue = "00" + sValue;
                    if (sValue.length() == 3)
                        sValue = "0" + sValue;
                    if (sValue.length() == 4)
                        sValue = sValue + "00";
                    if (sValue.length() == 5)
                        sValue = sValue + "0";
                    return sValue;
                }
            }
        }
        int iSecondSep = sValue.indexOf(':', iFirstSep + 1);
        if (iSecondSep < 0) {
            iSecondSep = sValue.indexOf(',', iFirstSep + 1);
            if (iSecondSep < 0) {
                iSecondSep = sValue.indexOf('.', iFirstSep + 1);
            }
        }
        String sHH = "";
        String sMM = "";
        String sSS = "";
        if (iFirstSep > 0) {
            int iBegin = 0;
            if (iFirstSep > 5)
                iBegin = iFirstSep - 2;
            sHH = sValue.substring(iBegin, iFirstSep).trim();
            if (iSecondSep > 0) {
                sMM = sValue.substring(iFirstSep + 1, iSecondSep).trim();
                sSS = sValue.substring(iSecondSep + 1).trim();
                if (sSS.length() > 2)
                    sSS = sSS.substring(0, 2);
            } else {
                sMM = sValue.substring(iFirstSep + 1).trim();
                sSS = "00";
                if (sMM.length() > 2)
                    sMM = sMM.substring(0, 2);
            }
        }
        // Check Hour
        if (sHH.length() == 0)
            sHH = "00";
        else if (sHH.length() == 1)
            sHH = "0" + sHH;
        int iHH = 0;
        try {
            iHH = Integer.parseInt(sHH);
        } catch (Throwable th) {
            return "000000";
        }
        if (iHH < 0 || iHH > 23)
            return "000000";
        // Check Minutes
        if (sMM.length() == 0)
            sMM = "00";
        else if (sMM.length() == 1)
            sMM = "0" + sMM;
        int iMM = 0;
        try {
            iMM = Integer.parseInt(sMM);
        } catch (Throwable th) {
            return "000000";
        }
        if (iMM < 0 || iMM > 59)
            return "000000";
        // Check Seconds
        if (sSS.length() == 0)
            sSS = "00";
        else if (sSS.length() == 1)
            sSS = "0" + sSS;
        int iSS = 0;
        try {
            iSS = Integer.parseInt(sSS);
        } catch (Throwable th) {
            return "000000";
        }
        if (iSS < 0 || iSS > 59)
            return "000000";
        return sHH + sMM + sSS;
    }

    public static String normalizeStringDate(String sValue) {
        return normalizeStringDate(sValue, false);
    }

    public static String normalizeStringDate(String sValue, boolean boExcludeNumber) {
        if (sValue == null)
            return null;
        sValue = sValue.trim();
        if (sValue.length() == 0)
            return null;
        if (sValue.length() >= 28 && Character.isLetter(sValue.charAt(0))) {
            // Ad es. Tue Jan 01 00:00:00 CET 2013
            String sYear = sValue.substring(sValue.length() - 4);
            try {
                Integer.parseInt(sYear);
            } catch (Throwable th) {
                return null;
            }
            String sMonth = getMonth(sValue.substring(4, 7));
            if (sMonth == null || sMonth.length() < 2)
                return null;
            String sDay = sValue.substring(8, 10);
            int iDay = 0;
            try {
                iDay = Integer.parseInt(sDay);
            } catch (Throwable th) {
                return null;
            }
            if (iDay < 1 || iDay > 31)
                return null;
            return sYear + sMonth + sDay;
        }
        int iFirstSep = sValue.indexOf('/');
        if (iFirstSep < 0) {
            iFirstSep = sValue.indexOf('-');
            if (iFirstSep <= 0) {
                iFirstSep = sValue.indexOf('.');
                if (iFirstSep <= 0) {
                    if (boExcludeNumber)
                        return null;
                    if (sValue.length() > 8) {
                        long lValue = 0;
                        try {
                            lValue = Long.parseLong(sValue);
                        } catch (Throwable th) {
                            return null;
                        }
                        Calendar cal = Calendar.getInstance();
                        cal.setTimeInMillis(lValue);
                        int iDate = cal.get(Calendar.YEAR) * 10000 + (cal.get(Calendar.MONTH) + 1) * 100
                                + cal.get(Calendar.DAY_OF_MONTH);
                        return String.valueOf(iDate);
                    }
                    if (sValue.length() != 8)
                        return null;
                    try {
                        Integer.parseInt(sValue);
                    } catch (Throwable th) {
                        return null;
                    }
                    return sValue;
                }
            }
        }
        int iSecondSep = sValue.indexOf('/', iFirstSep + 1);
        if (iSecondSep < 0) {
            iSecondSep = sValue.indexOf('-', iFirstSep + 1);
            if (iSecondSep < 0) {
                iSecondSep = sValue.indexOf('.', iFirstSep + 1);
                if (iSecondSep < 0)
                    return null;
            }
        }
        String sDay = null;
        String sMonth = null;
        String sYear = null;
        if (iFirstSep >= 4) {
            // year - month - day
            sYear = sValue.substring(0, iFirstSep).trim();
            sMonth = sValue.substring(iFirstSep + 1, iSecondSep).trim();
            sDay = sValue.substring(iSecondSep + 1).trim();
            if (sDay.length() > 2)
                sDay = sDay.substring(0, 2);
        } else {
            // day - month - year
            sDay = sValue.substring(0, iFirstSep).trim();
            sMonth = sValue.substring(iFirstSep + 1, iSecondSep).trim();
            sYear = sValue.substring(iSecondSep + 1).trim();
            if (sYear.length() > 4)
                sYear = sYear.substring(0, 4);
        }
        // Check Day
        if (sDay.length() == 0)
            sDay = "01";
        else if (sDay.length() == 1)
            sDay = "0" + sDay;
        int iDay = 0;
        try {
            iDay = Integer.parseInt(sDay);
        } catch (Throwable th) {
            return null;
        }
        if (iDay < 1 || iDay > 31)
            return null;
        // Check Month
        if (sMonth.length() > 2 && Character.isLetter(sMonth.charAt(0))) {
            sMonth = getMonth(sMonth);
            if (sMonth == null)
                return null;
        }
        if (sMonth.length() == 0)
            sMonth = "01";
        else if (sMonth.length() == 1)
            sMonth = "0" + sMonth;
        int iMonth = 0;
        try {
            iMonth = Integer.parseInt(sMonth);
        } catch (Throwable th) {
            return null;
        }
        if (iMonth < 1 || iMonth > 12)
            return null;
        // Check Year
        int iYear = 0;
        try {
            iYear = Integer.parseInt(sYear);
        } catch (Throwable th) {
            return null;
        }
        if (iYear < 1000 || iYear > 9999)
            return null;
        return sYear + sMonth + sDay;
    }

    public static String getMonth(String sMonth) {
        String sMonthLC = sMonth.toLowerCase();
        if (sMonthLC.startsWith("jan") || sMonthLC.startsWith("ge"))
            return "01";
        if (sMonthLC.startsWith("f"))
            return "02";
        if (sMonthLC.startsWith("mar"))
            return "03";
        if (sMonthLC.startsWith("ap"))
            return "04";
        if (sMonthLC.startsWith("may") || sMonthLC.startsWith("mag"))
            return "05";
        if (sMonthLC.startsWith("jun") || sMonthLC.startsWith("gi"))
            return "06";
        if (sMonthLC.startsWith("jul") || sMonthLC.startsWith("lu"))
            return "07";
        if (sMonthLC.startsWith("au") || sMonthLC.startsWith("ag"))
            return "08";
        if (sMonthLC.startsWith("s"))
            return "09";
        if (sMonthLC.startsWith("o"))
            return "10";
        if (sMonthLC.startsWith("n"))
            return "11";
        if (sMonthLC.startsWith("d"))
            return "12";
        return null;
    }
}

Related

  1. toSqlTimestamp(Date d)
  2. toSqlTimeStamp(Date d)
  3. toSQLTimestamp(Date date)
  4. toSQLTimestamp(DateTime dt)
  5. toSqlTimestamp(java.util.Date date)
  6. toSQLTimestamp(String time)
  7. toTimestamp(BigDecimal value)
  8. toTimestamp(Date date)
  9. toTimestamp(Date date)