Привет всем.
На днях столкнулся с вопросом как лучше всего обмениватся датами между двумя стронним вебсервисом и Salesforce. Возможности apex по парсингу дат из строки жудко ограничены, а формат который нам присылали, тоже был заточен под российскую локаль. В общем было принято решение как-то это дело унифицировать и взять формат который понятен и Salesforce и русскому сервису. Выбор пал на ISO 8601
В нете нашел очень пример с хитрым решением и собственно им воспользовался.
string str = '"2013-01-30T07:38:44.268Z"';
System.debug(json.deserialize(str, datetime.class));
Я использую другую конструкцию. Если нужен более универсальный способ. Нужно обработать еще и UTC.
if (Value.endsWith('.000Z')) {
Value = Value.replace('T', ' ').replace('.000Z', '');
Value = datetime.valueOfGmt(Value).format('yyyy-MM-dd HH:mm:ss');
}
Провел просто небольшой эксперимент:
String str = '2013-01-30T07:38:44.000Z';
System.debug('XXXXX 1 - '+(Datetime)json.deserialize('"'+str+'"', datetime.class));
String sstr = str.replace('T', ' ').replace('.000Z', '');
System.debug('XXXXX 2 - '+Datetime.valueOfGmt(sstr));
Вывод в лог
А как тогда ты обрабатываешь такую дату?
String str = '2013-01-30T07:38:44.000+03';
System.debug('XXXXX 1 - '+(Datetime)json.deserialize('"'+str+'"', datetime.class));