我在数据库中存储了一组以UTC格式存储的日期,当我使用tSalesforceOutput在Salesforce中导入它们时:
Talend / Salesforce API是否使用本地时区?我该如何防止这种情况?
答案 0 :(得分:0)
在存储它们之前,Salesforce将始终将日期时间从用户时区转换为UTC。 为了避免任何问题,更简单的方法是将用于Salesforce连接的用户时区固定为GMT,并在调用任何tSalesforceOutputXxxx组件之前将每个日期时间显式转换为此时区。
以下是您可以用于此目的的例程:
package routines;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
public class dateConversion {
public static String convertToGmt(String strDate, String timezone) throws Exception
{
if (strDate == null || timezone == null)
return null;
// Convert strDate from any valid TimeZone such as Europe/Paris to GMT
// strDate is expected to be formatted as "yyyy-MM-ddTHH:mm:ssZ"
SimpleDateFormat indfm = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
indfm.setTimeZone(TimeZone.getTimeZone(timezone));
Date inDate = indfm.parse(strDate);
SimpleDateFormat outdfm = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
outdfm.setTimeZone(TimeZone.getTimeZone("GMT"));
String s = outdfm.format(inDate);
return s;
}
}
希望这有帮助。
TRF