0
我有一組存儲在我的數據庫,UTC日期的時候我導入它們在Salesforce:力拓藍使用tSalesforceOutput使用UTC的日期
- 如果我從我的計算機上運行的進口,他們得到錯誤的時區
- 如果我從UTC服務器運行導入,他們會得到正確的時區。
是使用當地時區的Talend/Salesforce API嗎?我怎樣才能防止這一點?
我有一組存儲在我的數據庫,UTC日期的時候我導入它們在Salesforce:力拓藍使用tSalesforceOutput使用UTC的日期
是使用當地時區的Talend/Salesforce API嗎?我怎樣才能防止這一點?
Salesforce會將datetime從用戶時區轉換爲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
我從來沒有真正處理字符串。我從數據庫中得到了一個java.util.Date(),並且在tMap的側面有一個java.util.Date(),它向Salesforce方向發展,所以我不明白如何使用這個函數。我將不得不執行一個日期 - >字符串 - >字符串來獲得轉換工作並檢索當前時區以將其傳遞給convertToGmt? – Edmondo1984
您可以嘗試在命令行上通過-Duser.timezone =「UTC」的JVM級別強制時區,或者作爲特定的JVM參數(選項卡Run> Advanced settings)強制執行時區。 – TRF
我希望我的工作能夠在任何時區正常工作,而不是強迫我的程序在特定的時區執行 – Edmondo1984