2017-02-09 13 views
0

Я работаю на серверах в RESTlets.Как правильно получить значение datetime из пользовательского поля?

Я в Великобритании, поэтому у меня есть другой часовой пояс для серверов NS. Когда я ставлю значение в поле даты и времени пользовательского Уточняю часового пояса, как это:

var dateTime = new Date(); 

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

DATETIME является 2017-02-10T18: 24: 02.000Z

А затем NS отображает мое значение правильно

enter image description here

Но я не вижу, как правильно получить значение.

У меня есть значение в результатах поиска, и я попытался это:

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

Но возвращается 2017-02-11T02: 24: 00.000Z

Это значение имеет две проблемы :

  1. Время не то.
  2. Сроки обнуления.

Я не возражаю против секунд в данный момент, но как я могу сделать время правильным? Предположительно, я делаю что-то неправильно с часовыми поясами.

+0

Вы, кажется, указав часовой пояс «America/Los_Angeles» (который является UTC-0800) в первом примере, но не во временной зоне во втором. Очевидно, вы находитесь в Великобритании, которая, скорее всего, UTC + 0000. Разница во времени между ними составляет -08: 00, так что да, вероятно, проблема с часовым поясом (я понятия не имею о секундах). – RobG

ответ

2

Вы получаете дату, используя метод из объекта nlobjSearchResult, который не позволяет вам указать часовой пояс. Чтобы получить правильное значение, к сожалению, в этом случае вам нужно загрузить запись, а затем получить значение с помощью API-интерфейса часового пояса.

Например, в вашем случае, вы бы сначала получить идентификатор записи из «результата» объекта:

var id = result.getId(); 

Затем вы используете записи нагрузки API для загрузки записи:

var record = nlapiLoadRecord(recordType, id); 

Где «recordType» - это идентификатор вашего типа/объекта записи.

Наконец, вы используете даты/часового пояса 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 
+0

Спасибо. Я добавил больше кода для ответа, чтобы полностью решить мою проблему. – cja

-3

Я бы просто преобразовал его в себя. Если +8 часов ...

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