如何正确地从自定义字段中获取日期时间值?

How to get datetime value from a custom field correctly?

我在 RESTlets 的服务器端工作。

我在英国,所以我的时区与 NS 服务器不同。当我将值放入日期时间自定义字段时,我会像这样指定时区:

var dateTime = new Date();

record.setDateTimeValue(‘fieldid', nlapiDateToString(dateTime, 'datetimetz'), ‘America/Los_Angeles’);

日期时间为 2017-02-10T18:24:02.000Z

然后NS正常显示我的值

但我看不出如何正确地取出值。

我在搜索结果中得到了值,我尝试了这个:

var dateTimeValue = nlapiStringToDate(result.getValue(‘fieldid'), 'datetime');

但是 returns 2017-02-11T02:24:00.000Z

这个值有两个问题:

  1. 时间不对
  2. 秒归零。

我现在不介意秒数,但我怎样才能使时间正确?大概是我在时区方面做错了。

我会自己转换它。如果是+8小时...

dateTimeValue.setHours(dateTimeValue.getHours() + 8);

您正在使用对象 nlobjSearchResult 中的方法获取日期,该方法不允许您指定时区。为了获得正确的值,不幸的是在这种情况下您需要加载记录,然后使用时区 API.

获取值

例如,在您的情况下,您将首先从 "result" 对象获取记录 ID:

var id = result.getId();

然后,您使用加载记录API加载记录:

var record = nlapiLoadRecord(recordType, id);

其中"recordType"是您记录type/entity的ID。

最后,您使用date/time时区API正确获取date/time字段,在您需要的时区:

var nsDateTimeValue = record.getDateTimeValue('fieldId', 'America/Los_​Angeles'); 
//nsDateTimeValue is a string

var jsDateTimeValue = nlapiStringToDate(nsDateTimeValue, 'datetimetz');
//jsDateTimeValue is a JavaScript Date object in the correct timezone with seconds