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