2017-02-09 61 views
0

我在RESTlets中的serverside中工作。如何正確地從自定義字段中獲取日期時間值?

我在英國,所以我有一個不同的時區NS服務器。當我把一個值轉換爲日期時間的自定義字段我指定這樣的時區:

var dateTime = new Date(); 

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

日期時間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

你似乎是指定的「美國/洛杉磯」時區(即UTC-0800),但第二個例子中沒有時區。顯然你在英國,可能是UTC + 0000。兩者之間的時差是-08:00所以是的,可能是一個時區問題(我不知道秒)。 – RobG

回答

2

你得到使用從對象nlobjSearchResult,它不允許你指定一個時區的方法的日期。爲了獲得正確的值,不幸的是,在這種情況下,您需要加載記錄,然後使用時區API獲取值。

例如,在你的情況,你會首先從「結果」對象獲取記錄ID:

var id = result.getId(); 

然後,使用負載記錄API來加載記錄:

var record = nlapiLoadRecord(recordType, id); 

其中「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 
+0

謝謝。我在答案中添加了更多代碼以完全解決我的問題。 – cja

-3

我只是將它轉換自己。如果是8小時...

dateTimeValue.setHours(dateTimeValue.getHours() + 8); 
相關問題