Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/*
 * Copyright 2014 Kevin Quan (kevin.quan@gmail.com)
 * 
 * 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.util.Calendar;
import java.util.TimeZone;

public class Main {
    /**
     * Takes a calendar object representing a date/time, ignores its current time zone (which should be the default time zone)
     * applies that date/time to the sourceTimeZone and returns the relative date/time in the current time zone. 
     * 
     * For example, given an input of 13:00 EST and source time zone PST, it will return 16:00 EST 
     * 13:00 EST = 18:00 GMT = 10:00 PST
     *  
     * @param calendar
     * @param sourceTimeZone
     * @return
     */
    public static Calendar convertToTimeZone(Calendar calendar, TimeZone sourceTimeZone) {
        Calendar result = Calendar.getInstance();
        // i.e., 13:00 EST becomes 08:00 GMT
        long originalTimeInUtc = calendar.getTimeInMillis()
                + calendar.getTimeZone().getOffset(calendar.getTimeInMillis());
        // 08:00 GMT becomes 16:00 PST
        long sourceTime = originalTimeInUtc - sourceTimeZone.getOffset(originalTimeInUtc);
        result.setTimeZone(sourceTimeZone);
        result.setTimeInMillis(sourceTime);
        /*
        Log.d(TAG, "Converting "+DEBUG_CALENDAR_OUTPUT.format(new Date(calendar.getTimeInMillis()))
            +" in ["+sourceTimeZone.getDisplayName()+"] to ["+TimeZone.getDefault().getDisplayName()
            +"] resulting in "+DEBUG_CALENDAR_OUTPUT_WITH_TIMEZONE.format(new Date(result.getTimeInMillis())));
        Log.d(TAG, "Original time in UTC = "+DEBUG_CALENDAR_OUTPUT.format(new Date(originalTimeInUtc)));
        Log.d(TAG, "Original time in source time zone = "+DEBUG_CALENDAR_OUTPUT.format(new Date(sourceTime)));
         */
        return result;
    }
}