salesforce中的字符串到日期时间转换

时间:2013-08-04 02:16:22

标签: salesforce apex-code

以下行在salesforce中给我'FIELD_INTEGRITY_EXCEPTION'。请为我提供替代方案。

imr.Assigned_DTM__c = DateTime.valueOfGmt(('06/08/2013 06:30:22')。replaceAll('/',' - '));

1 个答案:

答案 0 :(得分:5)

问题是您使用的格式不正确

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
从调试中可以看出,第一个变量返回了不正确的日期时间值。

Official documentation说以下

  

valueOfGmt 返回包含的日期时间   指定String的值。 String应使用标准日期   格林威治标准时间格式“yyyy-MM-dd HH:mm:ss”

使用datetime更正初始字符串。

<强>更新

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"