如何正确地从自定义字段中获取日期时间值?
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
这个值有两个问题:
- 时间不对
- 秒归零。
我现在不介意秒数,但我怎样才能使时间正确?大概是我在时区方面做错了。
我会自己转换它。如果是+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
我在 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
这个值有两个问题:
- 时间不对
- 秒归零。
我现在不介意秒数,但我怎样才能使时间正确?大概是我在时区方面做错了。
我会自己转换它。如果是+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