Here you can find the source of getAlarmMinutes(String dtStart, String dtAlarm, Logger logger)
Parameter | Description |
---|---|
dtStart | String |
dtAlarm | String |
public static int getAlarmMinutes(String dtStart, String dtAlarm, Logger logger)
//package com.java2s; /*//from ww w. j a v a 2 s .c om * 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; import java.util.TimeZone; import java.util.logging.Logger; 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; public final static TimeZone TIMEZONE_UTC = TimeZone.getTimeZone("UTC"); /** * If dtStart and date into Alarm aren't empty, computes the minutes before * to start the reminder as dtStart - date alarm = minutes and return it. * * The format of the return dtEnd is the same of the dtStart. * The format accepted are the following: * <lu> * <li>"yyyyMMdd'T'HHmmss'Z'"</li> * <li>"yyyyMMdd'T'HHmmss"</li> * <li>"yyyyMMdd"</li> * <li>"yyyy-MM-dd"</li> * </lu> * However, all times and dates will be interpreted as UTC. * * @param dtStart String * @param dtAlarm String * * @return int minutes before to start reminder */ public static int getAlarmMinutes(String dtStart, String dtAlarm, Logger logger) { Date dateStart = null; Date dateAlarm = null; if (dtStart == null || dtStart.equals("") || dtAlarm == null || dtAlarm.equals("")) { return 0; } try { SimpleDateFormat formatter = new SimpleDateFormat(); formatter.setTimeZone(TIMEZONE_UTC); formatter.applyPattern(getDateFormat(dtStart)); dateStart = formatter.parse(dtStart); formatter.applyPattern(getDateFormat(dtAlarm)); dateAlarm = formatter.parse(dtAlarm); } catch (ParseException e) { logger.severe("Error during parser date"); logger.throwing("TimeUtils", "getAlarmMinutes", e); // // If we are unable to parse dtStart or dtAlarm return 0 // return 0; } long minutes = dateStart.getTime() - dateAlarm.getTime(); return (int) (minutes / 1000 / 60); } /** * 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; } }