Java Basic 時間差を求める

import java.text.*;
import java.util.*;

public class time1{
public static void main( String [] args ){
SimpleDateFormat sdf = new SimpleDateFormat( "HH:mm" );

Calendar a = Calendar.getInstance();
Calendar b = Calendar.getInstance();
Calendar c = Calendar.getInstance();

// 18:00をセット
a.set( Calendar.YEAR, 2013 );
a.set( Calendar.MONTH, 01 );
a.set( Calendar.DATE, 16 );
a.set( Calendar.HOUR_OF_DAY, 17 );
a.set( Calendar.MINUTE, 30 );
a.set( Calendar.SECOND, 0 );
System.out.println( "a.getTime()=" + a.getTime() );
// 09:00をセット
b.set( Calendar.YEAR, 2013 );
b.set( Calendar.MONTH, 01 );
b.set( Calendar.DATE, 16 );
b.set( Calendar.HOUR_OF_DAY, 9 );
b.set( Calendar.MINUTE, 0 );
b.set( Calendar.SECOND, 0 );
System.out.println( "b.getTime()=" + b.getTime() );

// 差分を求めてUTC+9:00を引く
long sa = a.getTimeInMillis() - b.getTimeInMillis() - c.getTimeZone().getRawOffset();
System.out.println( "sa=" + sa );
c.setTimeInMillis( sa );
System.out.println( "c.getTime()=" + c.getTime() );
int hi = c.get(Calendar.DATE); 
hi = 24 * (hi - 1);
System.out.println( "hi=" + hi );
// 表示
String [] s = sdf.format( c.getTime() ).split(":");
int hour = Integer.parseInt( s[0] ) + hi;
int minute = Integer.parseInt( s[1] );
System.out.println( hour + "時間" + minute + "分" );
}
}