Salesforce 日期时间问题

问题描述 投票:0回答:2

我目前正在编写一个使用 Salesforce API 的 C# .Net 应用程序。我正在发送带有日期时间字段的帐户对象。

我的日期时间对象均采用这种格式

dd/MM/yyyy HH:mm:ss
,这也与我执行简单查询时返回的日期字段的格式相同
SELECT Name, Date FROM Account WHERE ID != null
- 我之前已在 Salesforce 中的测试帐户中手动设置了一个日期查询。我已经检查了与日期格式有关的所有内容,并且确信我正在向 Salesforce 发送正确的数据类型和日期时间格式。

我的问题是 Salesforce 似乎将日期字段留空。任何人都知道我可以确保 Salesforce 接受日期详细信息的方法。

DateTimeFormatInfo dtfi = new DateTimeFormatInfo();
dtfi.FullDateTimePattern = "dd/MM/yyyy HH:mm:ss";
dtfi.DateSeparator = "/";
string _TempRangeEndDate = "2013-08-31"
DateTime objDateRangeEnd = Convert.ToDateTime(_TempRangeEndDate,dtfi);
_TempAccount.Date_End__c = objDateRangeStart; //Salesforce not accepting converted format which is "31/08/2013 00:00:00"
c# .net datetime salesforce
2个回答
8
投票

.NET SOAP 堆栈不会发送日期时间(以及其他一些基本类型,如数字),除非您设置额外的指定标志,例如

_TempAccount.Date_End__c = DateTime.Now;
_TempAccount.Date_End__c_Specified = True;

如果您不设置此标志,.NET Soap 堆栈不会序列化该元素,并且它永远不会发送到 salesforce。 (因此该字段保持空白)


3
投票

我的日期时间对象都是这种格式“dd/MM/yyyy HH:mm:ss”

不,他们不是。至少如果您谈论的是 .NET

DateTime
值或数据库字段,则不是。这些都没有隐式的格式 - 它们只是值。

当你不需要时,你应该避免使用文本。因此,当您向 SQL 发送查询时,应该使用参数化 SQL,并将 DateTime

 值作为参数...根本不需要字符串转换。

您说 Salesforce“不接受转换后的格式,即“31/08/2013 00:00:00”” - 但您只是分配一个

DateTime

 值。它没有
转换后的格式。我认为您需要仔细查看整个数据流,并尽量减少字符串转换。如果可能,请坚持仅使用 DateTime
。然后
非常仔细地检查 Salesforce 中的任何错误。问题很可能不是你想象的那样。 (很难说,因为您没有告诉我们 Salesforce 给您带来了什么样的错误。)

© www.soinside.com 2019 - 2024. All rights reserved.