NetSuite RESTlet,提交 Date/Time 时区问题

NetSuite RESTlet, Submitting Date/Time Timezone Issues

我有一个 RESTlet,用于根据我们网站上的表单提交创建新的客户实体。我试图在添加到客户记录的自定义 Date/Time 实体字段中保存三个值。该服务接受日期作为时间戳整数(例如 1421434991537)。然后 RESTlet 代码需要提交该时间戳作为东部时间的正确日期。

我一直在阅读有关 NetSuite date/times 的问题,当我使用 "new Date(myIntVal)" 创建日期对象时,它是在太平洋时间创建的。我一直在尝试将 Olson 值传递给 setDateTimeValue,就像文档和其他一些博客文章所说的那样。

我需要将这些值保存为东部时间,但无论我做什么,时间总是以太平洋时间提交。我错过了什么?

// firstVisit, previousVisit, and currentVisit are all the timestamp int values.

var firstVisitDate = nlapiDateToString(new Date(firstVisit), 'datetimetz');
var previousVisitDate = nlapiDateToString(new Date(previousVisit), 'datetimetz');
var currentVisitDate = nlapiDateToString(new Date(currentVisit), 'datetimetz');

leadRecord.setDateTimeValue(FIELD_NAME_WEB_FIRST_VISIT, firstVisitDate, 14);
leadRecord.setDateTimeValue(FIELD_NAME_WEB_PREVIOUS_VISIT, previousVisitDate, 14);
leadRecord.setDateTimeValue(FIELD_NAME_WEB_CURRENT_VISIT, currentVisitDate, 14);

NetSuite 服务器设置为具有 PST Date/Time。如果您的 date/time 使用 EST,请先将其转换为 PST,然后再更新记录;如果您要从 NetSuite 中取出 date/time,则将其转换为 EST。

nlapiSetDateTimeValue API 具有以下参数 fieldId、dateTime 和 timeZone。 timeZone 参数不是日期应转换到的时区。它应该是 dateTime 字段的时区。此 API 将 dateTime 的值转换为 USER'S TIMEZONE,如在其 NetSuite 帐户中设置的那样。

因此请确保用户 运行 RESTlet 将他们的时区设置为东部,然后在您的 API 调用中传递太平洋的 Olson 值。