Преобразование часового пояса на дату с использованием Java


Я написал этот способ для преобразования даты часовой пояс. Как я могу уменьшить время выполнения этого метода в дальнейшем.

public static Timestamp convertTimeZone(final Timestamp fromDate, final TimeZone fromTZ, final TimeZone toTZ ){
                Long timeInDate  =  fromDate.getTime() ;
                int fromOffset = fromTZ.getOffset(timeInDate);
                int toOffset = toTZ.getOffset(timeInDate);
                Timestamp dateStamp = new Timestamp(fromDate.getTime());
                if( fromOffset >= 0){
                    int diff = 0;
                    if( toOffset > 0){
                        diff = ( fromOffset - toOffset);
                    }else{
                        diff = ( fromOffset + Math.abs(toOffset));
                    }
                    long date = fromDate.getTime() - diff;
                    dateStamp.setTime( date );
                }else{
                    int diff = 0;
                    if( toOffset > 0){
                        diff = ( Math.abs( fromOffset) + toOffset);
                    }else{
                        diff = ( Math.abs( fromOffset) - Math.abs(toOffset));
                    }
                    long date = fromDate.getTime() + diff;
                    dateStamp.setTime( date );
                }           
                return dateStamp;
            }


495
2
задан 21 июля 2011 в 06:07 Источник Поделиться
Комментарии
1 ответ

Метод может быть сокращен немного. Он, наверное, иметь некоторое влияние и на производительность.

public static Timestamp convertTimeZone(final Timestamp fromDate, final TimeZone fromTZ, final TimeZone toTZ ){

// primitive long should be enough for his task
final long timeInDate = fromDate.getTime();
final int fromOffset = fromTZ.getOffset(timeInDate);
final int toOffset = toTZ.getOffset(timeInDate);

return new Timestamp(timeInDate + (toOffset - fromOffset));
}

3
ответ дан 21 июля 2011 в 07:07 Источник Поделиться