强制Talend将UTC用于日期

时间:2017-04-13 08:58:54

标签: talend utc

我在数据库中存储了一组以UTC格式存储的日期,当我使用tSalesforceOutput在Salesforce中导入它们时:

  1. 如果我从我的机器运行导入,则会得到错误的时区
  2. 如果我从UTC服务器运行导入,则会获得正确的时区。
  3. Talend / Salesforce API是否使用本地时区?我该如何防止这种情况?

1 个答案:

答案 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