123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- package org.apache.archiva.common.utils;
-
- /*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.util.Calendar;
- import java.util.Date;
- import java.util.GregorianCalendar;
-
- /**
- * DateUtil - some (not-so) common date utility methods.
- *
- *
- */
- public class DateUtil
- {
- public static String getDuration( long duration )
- {
- return getDuration( new Date( 0 ), new Date( duration ) );
- }
-
- public static String getDuration( long ms1, long ms2 )
- {
- return getDuration( new Date( ms1 ), new Date( ms2 ) );
- }
-
- public static String getDuration( Date d1, Date d2 )
- {
- Calendar cal1 = new GregorianCalendar();
- cal1.setTime( d1 );
-
- Calendar cal2 = new GregorianCalendar();
- cal2.setTime( d2 );
-
- return getDuration( cal1, cal2 );
- }
-
- public static String getDuration( Calendar cal1, Calendar cal2 )
- {
- int year1 = cal1.get( Calendar.YEAR );
- int day1 = cal1.get( Calendar.DAY_OF_YEAR );
- int hour1 = cal1.get( Calendar.HOUR_OF_DAY );
- int min1 = cal1.get( Calendar.MINUTE );
- int sec1 = cal1.get( Calendar.SECOND );
- int ms1 = cal1.get( Calendar.MILLISECOND );
-
- int year2 = cal2.get( Calendar.YEAR );
- int day2 = cal2.get( Calendar.DAY_OF_YEAR );
- int hour2 = cal2.get( Calendar.HOUR_OF_DAY );
- int min2 = cal2.get( Calendar.MINUTE );
- int sec2 = cal2.get( Calendar.SECOND );
- int ms2 = cal2.get( Calendar.MILLISECOND );
-
- int leftDays = ( day1 - day2 ) + ( year1 - year2 ) * 365;
- int leftHours = hour2 - hour1;
- int leftMins = min2 - min1;
- int leftSeconds = sec2 - sec1;
- int leftMilliSeconds = ms2 - ms1;
-
- if ( leftMilliSeconds < 0 )
- {
- leftMilliSeconds += 1000;
- --leftSeconds;
- }
-
- if ( leftSeconds < 0 )
- {
- leftSeconds += 60;
- --leftMins;
- }
-
- if ( leftMins < 0 )
- {
- leftMins += 60;
- --leftHours;
- }
-
- if ( leftHours < 0 )
- {
- leftHours += 24;
- --leftDays;
- }
-
- StringBuffer interval = new StringBuffer();
-
- appendInterval( interval, leftDays, "Day" );
- appendInterval( interval, leftHours, "Hour" );
- appendInterval( interval, leftMins, "Minute" );
- appendInterval( interval, leftSeconds, "Second" );
- appendInterval( interval, leftMilliSeconds, "Millisecond" );
-
- return interval.toString();
- }
-
- private static void appendInterval( StringBuffer interval, int count, String type )
- {
- if ( count > 0 )
- {
- if ( interval.length() > 0 )
- {
- interval.append( " " );
- }
-
- interval.append( count );
- interval.append( " " ).append( type );
- if ( count > 1 )
- {
- interval.append( "s" );
- }
- }
- }
-
- }
|