2017-02-09 8 views
0

私はRESTletsのサーバーサイドで働いています。カスタムフィールドからdatetime値を正しく取得する方法

私は英国にいるので、NSサーバーとは異なるタイムゾーンがあります。私は日時カスタムフィールドに値を入れたとき、私はこのように時間帯を指定:24:

var dateTime = new Date(); 

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

dateTimeのは2017-02-10T18あり、その後02.000Z

そして、NSは

適切に私の値を表示します

enter image description here

しかし、値を正しく取得する方法はわかりません。

私は、検索の結果の値を持っていると私はこの試みた:

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

をしかし、それは2017-02-11T02を返す:24:00.000Z

この値は2つの問題があります:

  1. 時間が間違っています。
  2. 秒はゼロです。

現在のところ秒数は気にしませんが、時間を正しく設定するにはどうすればよいですか?おそらく私はタイムゾーンに何か間違っています。

+0

あなたは(「アメリカ/ Los_Angeles」のタイムゾーンを指定するように見えます最初の例ではUTC-0800ですが、2番目の例ではタイムゾーンはありません。あなたはおそらくUTC + 0000である英国にいます。両者の時間差は-08:00です。おそらくタイムゾーンの問題です(私は秒については分かりません)。 – RobG

答えて

2

であればあなたは、時間帯を指定することはできませんオブジェクトnlobjSearchResult、からメソッドを使用して日付を取得しています。残念ながら正しい値を取得するには、レコードをロードし、タイムゾーンAPIを使用して値を取得する必要があります。あなたがレコードをロードするためのロードレコードAPIを使用し、その後

var id = result.getId(); 

:たとえば

は、あなたのケースでは、最初に「結果」オブジェクトからレコードIDを取得します

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); 
関連する問題