我的库中有一个函数可以返回当前日期:
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,而不是我们当地的时间。在这个函数中是否有一种简单的转换方法没有需要外部库?
答案 0 :(得分:4)
这是我多年来使用的一个utils函数。
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);
}
它使用贵公司的NetSuite设置和时区。假设您的NetSuite设置正确,这将在正确的时区返回日期。
你可以基本上做到:
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;
}
答案 1 :(得分: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)
答案 2 :(得分:0)
@ lez-yeoh getCompanyDate的Suitescript 2.0版本
function getCompanyDate(){
var currentDateTime = new Date();
var companyTimeZone = config.load({ type: config.Type.COMPANY_INFORMATION }).getText({ fieldId: 'timezone' });
var timeZoneOffSet = (companyTimeZone.indexOf('(GMT)') == 0) ? 0 : 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);
}