The following is a subset of the answer to [convert time from a different timezone other than local to GMT][1]. Using the date time input and the corresponding TimeZoneSid with the [TimeZone][2] class introduced in Spring 13 you can adjust the value to UTC. The `getOffset()` metthod with return the time zone offset in milliseconds to the GMT time zone.

	// This is the Date and Time in the customers TimeZone. It might differ to the current users timezone.
	string customerDateTimeString = '2014-10-22 12:12:00';
	DateTime customerDateTime = DateTime.valueofGmt(customerDateTimeString);
	string customerTimeZoneSidId = 'America/Los_Angeles';
	
	TimeZone customerTimeZone = TimeZone.getTimeZone(customerTimeZoneSidId);
	System.assertEquals('Pacific Standard Time',  customerTimeZone.getDisplayName());
	
	integer offsetToCustomersTimeZone = customerTimeZone.getOffset(customerDateTime);
	System.debug('GMT Offset: ' + offsetToCustomersTimeZone + ' (milliseconds) to PST');
	
	// For the given Date I expect PDT to be GMT - 7 hours
	System.assertEquals(-7, offsetToCustomersTimeZone / (1000 * 60 *60));
	
	// Figure out correct to go from Customers DateTime to GMT and then from GMT to Users TimeZone
	integer correction = - offsetToCustomersTimeZone;
	System.debug('correction to UTC: ' + correction);
	
	// Note: Potential issues for TimeZone differences less than a minute
	DateTime utcDateTime = customerDateTime.addMinutes(correction / (1000 * 60));
	System.debug('utcDateTime: ' + utcDateTime);
	// In the UTC timezone the time should be moved forward 7 hours
	System.assertEquals(utcDateTime, DateTime.valueofGmt('2014-10-22 19:12:00'));


  [1]: http://salesforce.stackexchange.com/q/8538/102
  [2]: http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_timezone.htm