强制Talend将UTC用于日期
当我使用TsaleForceOutput将日期导入Salesforce时,我的数据库中存储了一组UTC日期:强制Talend将UTC用于日期,talend,utc,Talend,Utc,当我使用TsaleForceOutput将日期导入Salesforce时,我的数据库中存储了一组UTC日期: 如果我从我的机器运行导入,他们会得到错误的时区 如果我从UTC格式的服务器上运行导入,它们将获得正确的时区 Talend/Salesforce API是否使用本地时区?如何防止这种情况发生?Salesforce会在存储日期时间之前,将日期时间从用户时区转换为UTC。 为了避免任何问题,更简单的方法是修复Salesforce连接到GMT时使用的用户时区,并在调用任何TsaleForceOu
Talend/Salesforce API是否使用本地时区?如何防止这种情况发生?Salesforce会在存储日期时间之前,将日期时间从用户时区转换为UTC。 为了避免任何问题,更简单的方法是修复Salesforce连接到GMT时使用的用户时区,并在调用任何TsaleForceOutputxxxx组件之前将每个datetime显式转换为该时区 以下是一个可用于此目的的例程:
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我从来没有真正处理过字符串。我从DB中得到了一个java.util.Date(),在tMap的一侧有一个java.util.Date(),它指向Salesforce,所以我不知道如何使用这个函数。我必须执行日期->字符串->字符串以使转换工作,并检索当前时区以将其传递给convertToGmt?您可以尝试在命令行上强制JVM级别的时区传递-Duser.timezone=“UTC”,或作为特定的JVM参数(选项卡运行>高级设置)。我希望我的工作在任何时区都能正常工作,而不是强制我的程序在特定时区执行。如果您想使用例程检索日期转换所需的时区,那么在tMap中只需编写dateConversion.convertToGmt(yourDate,yourTZ)之类的代码即可。这是我在数据迁移过程中使用的一种方法,其中每个记录的TZ根据其所有者的不同而不同。tMap左侧的我的日期来自MySQL,它存储在UTC中。我想知道转换发生在哪里,是MYSQL Talend组件吗?