You are currently browsing the daily archive for February 28, 2014.

I had posted a blog to show how to convert, but now I bring another new way more easier.

Here is my GitHub project link.

package com.test.timezone;

import java.util.TimeZone;

public final class Utility {
	public static final TimeZone utcTZ = TimeZone.getTimeZone("UTC");

	public static long toLocalTime(long time, TimeZone to) {
		return convertTime(time, utcTZ, to);
	}

	public static long toUTC(long time, TimeZone from) {
		return convertTime(time, from, utcTZ);
	}

	public static long convertTime(long time, TimeZone from, TimeZone to) {
		return time + getTimeZoneOffset(time, from, to);
	}

	private static long getTimeZoneOffset(long time, TimeZone from, TimeZone to) {
		int fromOffset = from.getOffset(time);
		int toOffset = to.getOffset(time);
		int diff = 0;

		if (fromOffset >= 0){
			if (toOffset > 0){
				toOffset = -1*toOffset;
			} else {
				toOffset = Math.abs(toOffset);
			}
			diff = (fromOffset+toOffset)*-1;
		} else {
			if (toOffset <= 0){
				toOffset = -1*Math.abs(toOffset);
			}
			diff = (Math.abs(fromOffset)+toOffset);
		}
		return diff;
	}
}

package com.test.timezone;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;

public class TestTimezone {

	public static void main(String[] args) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMM dd HH:mm:ss zzzz");
		Calendar date1 = new GregorianCalendar(2014,0,15,10,0,0);
		System.out.println(sdf.format(date1.getTime())+"\n");
		long utcTimeStamp = Utility.toUTC(date1.getTimeInMillis(), date1.getTimeZone());
		Calendar utcCal = Calendar.getInstance();
		utcCal.setTimeInMillis(utcTimeStamp);
		System.out.println("toUTC: "+sdf.format(utcCal.getTime())+"\n");

		System.out.println("---------------------------------------");
		Calendar date2 = new GregorianCalendar(2014,2,15,10,0,0);
		System.out.println(sdf.format(date2.getTime())+"\n");
		utcTimeStamp = Utility.toUTC(date2.getTimeInMillis(), date2.getTimeZone());
		utcCal.setTimeInMillis(utcTimeStamp);
		System.out.println("toUTC: "+sdf.format(utcCal.getTime())+"\n");

		System.out.println("---------------------------------------");
		Calendar date3 = new GregorianCalendar(2014,11,25,9,0,0);
		System.out.println(sdf.format(date3.getTime())+"\n");
		long uTime = Utility.toUTC(date3.getTimeInMillis(), date3.getTimeZone());
		System.out.println("utcTimeStamp: "+uTime+"\n");
		long lTime = Utility.toLocalTime(uTime, TimeZone.getTimeZone("EST"));
		Calendar locCal = Calendar.getInstance();
		locCal.setTimeInMillis(lTime);
		System.out.println("toLocal: "+sdf.format(locCal.getTime())+"\n");

		System.out.println("---------------------------------------");
		Calendar date4 = new GregorianCalendar(2014,6,4,9,0,0);
		System.out.println(sdf.format(date4.getTime())+"\n");
		uTime = Utility.toUTC(date4.getTimeInMillis(), date4.getTimeZone());
		System.out.println("utcTimeStamp: "+uTime+"\n");
		lTime = Utility.toLocalTime(uTime, TimeZone.getTimeZone("EST"));
		locCal = Calendar.getInstance();
		locCal.setTimeInMillis(lTime);
		System.out.println("toLocal: "+sdf.format(locCal.getTime())+"\n");
	}
}
Advertisements