我在RESTlet的服务器端工作。
我在英国,所以我和NS服务器有不同的时区。当我将值放入日期时间自定义字段时,我指定时区如下:
var dateTime = new Date();
record.setDateTimeValue(‘fieldid', nlapiDateToString(dateTime, 'datetimetz'), ‘America/Los_Angeles’);
dateTime是2017-02-10T18:24:02.000Z
然后NS正确显示我的价值
但是我看不出如何正确地获得价值。
我在搜索结果中得到了价值,我试过这个:
var dateTimeValue = nlapiStringToDate(result.getValue(‘fieldid'), 'datetime');
但是返回2017-02-11T02:24:00.000Z
这个值有两个问题:
我现在不介意秒,但我怎么能把时间做好呢?据推测,我对时区做错了。
答案 0 :(得分:2)
您使用对象nlobjSearchResult中的方法获取日期,该方法不允许您指定时区。为了获得正确的值,遗憾的是,在这种情况下,您需要加载记录,然后使用时区API获取值。
例如,在您的情况下,您将首先从"结果"获取记录ID。对象:
var id = result.getId();
然后,使用加载记录API加载记录:
var record = nlapiLoadRecord(recordType, id);
where" recordType"是您记录类型/实体的ID。
最后,您使用日期/时区API在您需要的时区内正确获取日期/时间字段:
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
答案 1 :(得分:-3)
我会把它转换成自己。如果是+8小时......
dateTimeValue.setHours(dateTimeValue.getHours() + 8);