Here you can find the source of convertDateFromInDayFormat(String stringDate, String hhmmss)
Parameter | Description |
---|---|
stringDate | the date to convert |
hhmmss | the hours, minutes, seconds to add |
public static String convertDateFromInDayFormat(String stringDate, String hhmmss) throws ParseException
//package com.java2s; /*/*from w w w. j a v a2 s.c o m*/ * Funambol is a mobile platform developed by Funambol, Inc. * Copyright (C) 2005 - 2007 Funambol, Inc. * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License version 3 as published by * the Free Software Foundation with the addition of the following permission * added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED * WORK IN WHICH THE COPYRIGHT IS OWNED BY FUNAMBOL, FUNAMBOL DISCLAIMS THE * WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU Affero General Public License * along with this program; if not, see http://www.gnu.org/licenses or write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA. * * You can contact Funambol, Inc. headquarters at 643 Bair Island Road, Suite * 305, Redwood City, CA 94063, USA, or at email address info@funambol.com. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License * version 3, these Appropriate Legal Notices must retain the display of the * "Powered by Funambol" logo. If the display of the logo is not reasonably * feasible for technical reasons, the Appropriate Legal Notices must display * the words "Powered by Funambol". */ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Main { public final static String PATTERN_YYYYMMDD = "yyyyMMdd"; public final static int PATTERN_YYYYMMDD_LENGTH = 8; public final static String PATTERN_YYYY_MM_DD = "yyyy-MM-dd"; public final static int PATTERN_YYYY_MM_DD_LENGTH = 10; public final static String PATTERN_UTC = "yyyyMMdd'T'HHmmss'Z'"; public final static int PATTERN_UTC_LENGTH = 16; public final static String PATTERN_UTC_WOZ = "yyyyMMdd'T'HHmmss"; public final static int PATTERN_UTC_WOZ_LENGTH = 15; public final static String PATTERN_UTC_WSEP = "yyyy-MM-dd'T'HH:mm:ss'Z'"; public final static int PATTERN_UTC_WSEP_LENGTH = 20; public final static String PATTERN_LOCALTIME = "dd/MM/yyyy HH:mm:ss"; public final static int PATTERN_LOCALTIME_LENGTH = 19; public final static String PATTERN_LOCALTIME_WOT = "dd/MM/yyyy"; public final static int PATTERN_LOCALTIME_WOT_LENGTH = 10; public final static String PATTERN_YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; public final static int PATTERN_YYYY_MM_DD_HH_MM_SS_LENGTH = 19; /** * Convert date from yyyy-MM-dd format or from yyyyMMdd format into * yyyyMMdd'T'HHmmss format. * * @param stringDate the date to convert * @param hhmmss the hours, minutes, seconds to add * * @return String the date into proper format */ public static String convertDateFromInDayFormat(String stringDate, String hhmmss) throws ParseException { if (stringDate == null || stringDate.length() == 0) { return ""; } StringBuffer sb = null; SimpleDateFormat formatter = new SimpleDateFormat(PATTERN_YYYY_MM_DD); Date date; try { formatter.setLenient(false); date = formatter.parse(stringDate); } catch (ParseException pe) { formatter = new SimpleDateFormat(PATTERN_YYYYMMDD); formatter.setLenient(false); date = formatter.parse(stringDate); } formatter.applyPattern(PATTERN_YYYYMMDD); sb = new StringBuffer(formatter.format(date)); sb.append('T').append(hhmmss); return sb.toString(); } /** * Convert date from yyyy-MM-dd or yyyyMMdd format into format yyyyMMdd'T'HHmmss. * If inUtc is true the date is converted in yyyyMMdd'T'HHmmss'Z' * * @param stringDate the date to convert * @param hhmmss the hours, minutes, seconds to add * * @return String the date into proper format */ public static String convertDateFromInDayFormat(String stringDate, String hhmmss, boolean inUtc) throws ParseException { if (stringDate == null || stringDate.length() == 0) { return ""; } StringBuffer sb = null; String format = getDateFormat(stringDate); SimpleDateFormat formatter = null; if (format.equals(PATTERN_YYYY_MM_DD)) { formatter = new SimpleDateFormat(PATTERN_YYYY_MM_DD); } else if (format.equals(PATTERN_YYYYMMDD)) { formatter = new SimpleDateFormat(PATTERN_YYYYMMDD); } else { throw new ParseException("Error, date " + stringDate + " pattern doesn't match the expected ones, " + PATTERN_YYYY_MM_DD + " or " + PATTERN_YYYYMMDD, 0); } formatter.setLenient(false); Date date = formatter.parse(stringDate); formatter.applyPattern(PATTERN_YYYYMMDD); sb = new StringBuffer(formatter.format(date)); sb.append('T').append(hhmmss); if (inUtc) { sb.append('Z'); } return sb.toString(); } /** * Get the date pattern * * @param date the date to get the format * @return String the pattern */ public static String getDateFormat(String date) { if (date == null || date.equals("")) { return null; } SimpleDateFormat dateFormat = new SimpleDateFormat(); String[] patterns = new String[] { PATTERN_UTC, PATTERN_UTC_WOZ, PATTERN_UTC_WSEP, PATTERN_YYYY_MM_DD, PATTERN_YYYYMMDD, PATTERN_LOCALTIME, PATTERN_LOCALTIME_WOT, PATTERN_YYYY_MM_DD_HH_MM_SS }; int[] patternsLength = new int[] { PATTERN_UTC_LENGTH, PATTERN_UTC_WOZ_LENGTH, PATTERN_UTC_WSEP_LENGTH, PATTERN_YYYY_MM_DD_LENGTH, PATTERN_YYYYMMDD_LENGTH, PATTERN_LOCALTIME_LENGTH, PATTERN_LOCALTIME_WOT_LENGTH, PATTERN_YYYY_MM_DD_HH_MM_SS_LENGTH }; int s = patterns.length; // and also patternsLength.length Date d = null; for (int i = 0; i < s; i++) { try { dateFormat.applyPattern(patterns[i]); dateFormat.setLenient(true); d = dateFormat.parse(date); if (date.length() == patternsLength[i]) { return patterns[i]; } } catch (ParseException e) { continue; } } return null; } }