1

ライブラリに現在の日付を返す関数があります。

function currentDate(addDays) {
    if (addDays == null||addDays == undefined) { 
        addDays = 0; 
    }
    var currentdate = new Date();
    var current = nlapiAddDays(currentdate,addDays);
    var day = current.getDate();
    var month = current.getMonth()+1
    var year = current.getFullYear();
    return day+'/'+month+'/'+year;
}

この関数を利用するスケジュールされたスクリプトを実行するまで、すべて正常に動作します。その時点で、返される日付は現地時間ではなく UTC になります。外部ライブラリを必要とせずに、この関数内で変換する単純な方法はありますか?

4

3 に答える 3

4

Here is a utils function that I've used for years.

function getCompanyDate(){
    var currentDateTime = new Date();
    var companyTimeZone = nlapiLoadConfiguration('companyinformation').getFieldText('timezone');
    var timeZoneOffSet = (companyTimeZone.indexOf('(GMT)') == 0) ? 0 : new Number(companyTimeZone.substr(4, 6).replace(/\+|:00/gi, '').replace(/:30/gi, '.5'));
    var UTC = currentDateTime.getTime() + (currentDateTime.getTimezoneOffset() * 60000);
    var companyDateTime = UTC + (timeZoneOffSet * 60 * 60 * 1000);

    return new Date(companyDateTime);
}

It uses your company's NetSuite settings and timezone. This will return the date in the correct timezone assuming your NetSuite settings are correct.

You could then essentially do:

function currentDate(addDays) {
if (addDays == null||addDays == undefined) { 
    addDays = 0; 
}
var currentdate = getCompanyDate();
var current = nlapiAddDays(currentdate,addDays);
var day = current.getDate();
var month = current.getMonth()+1
var year = current.getFullYear();
return day+'/'+month+'/'+year;
}
于 2016-01-22T02:57:14.600 に答える
0

これは私が行うことですが、レコードを作成する必要があるため、使用単位を消費します。

まず、非表示のカスタム日付/時刻フィールドを作成します。次に、次のコードを使用します。

var record = nlapiCreateRecord(<recordtype>);
record.setDateTimeValue(<fieldid>, nlapiDateToString(new Date(), 'datetimetz', 5);
var userDateTime = record.getFieldValue(<fieldid>); 

変数 userDateTime は現在、ローカル タイム ゾーンになっている必要があります。

nlapiSetDateTimeValue() API 関数は、日付/時刻の値をユーザーのタイムゾーンに変換します。以下はその構文です。

nlapiSetDateTimeValue(fieldId、dateTime、timeZone)

  1. fieldId = 日付/時刻フィールドの ID。
  2. dateTime = 変換する日付値。
  3. timeZone = 渡される日付のタイムゾーン。サーバー側のスクリプトの場合、通常はパシフィックにあるため、Olson 値 5 を渡します。
于 2016-01-22T06:21:18.287 に答える