Вопросы, в том, что вы используете неверный формат
System.debug(DateTime.valueOfGmt(('06/08/2013 06:30:22').replaceAll('/','-')));
System.debug(DateTime.valueOfGmt(('2013/08/06 06:30:22').replaceAll('/','-')));
консольный вывод:
08:19:40:061 USER_DEBUG [3]|DEBUG|0012-02-03 06:30:22
08:19:40:061 USER_DEBUG [5]|DEBUG|2013-08-06 06:30:22
, как вы можете видеть из отладки, то первый вариант возвращает неверное значение DateTime.
Official documentation говорит следующее
valueOfGmt Возвращает DATETIME, содержащий значение указанной строки . Строка должна использовать стандартный формат Дата «гггг-мм-дд чч: мм: сс» в часовом поясе GMT
исправить исходную строку даты-времени.
UPDATE
String myDate = '06/08/2013 06:30:22';
String stringDate = myDate.substring(6,10) + '-' +
myDate.substring(3,5) + '-' +
myDate.substring(0,2) + ' ' +
myDate.substring(11,19);
DateTime dt = datetime.valueOf(stringDate);
System.debug(String.valueOfGmt(dt));
журнала: dt|"2013-08-06T03:30:22.000Z"
да, но проблема в том, что я не буду получить строку в «YYYY-MM-DD HH: мм: сс» формат. так что я могу преобразовать строку в формате «mm-dd-yyyy HH: mm: ss» в datetime? – Raj
@RajuRathi посмотрите на обновление в ответ –
попробуйте DateTime.format (string), как описано в https://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_datetime.htm#apex_System_Datetime_format_2 –