You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SuiteScript 2.0获取Record日期字段并应用时区的实现疑问

在SuiteScript 2.0中处理日期字段的时区转换问题

我之前也踩过这个坑!确实SuiteScript 2.0移除了1.0里getDateTimeValue那种直接传时区参数的写法,getValue不管怎么传时区参数都会被忽略,官方文档里也没提这个参数的支持。不过有两种靠谱的解决方式,都是借助N/format模块来实现:

方式一:格式化指定时区的日期字符串

如果你需要的是可读性强的日期字符串,直接用format.format方法,把从getValue拿到的UTC原始值转换成目标时区的格式:

// 先加载format模块
const format = require('N/format');

// 获取记录上的日期时间字段(返回UTC时区的Date对象)
const rawUtcDate = record.getValue({
    fieldId: 'trandate' // 替换成你的字段ID
});

// 转换为指定时区的格式化字符串
const formattedDate = format.format({
    value: rawUtcDate,
    type: format.Type.DATETIME, // 根据字段类型选DATETIME或DATE
    timezone: format.Timezone.ASIA_SHANGHAI // 替换成你需要的时区枚举值
});

方式二:获取指定时区的Date对象

如果需要的是Date对象而非字符串,可以用format.parse方法,把UTC值解析为目标时区的Date对象:

const format = require('N/format');

const rawUtcDate = record.getValue({
    fieldId: 'trandate'
});

// 将UTC日期解析为目标时区的Date对象
const dateInTargetTimezone = format.parse({
    value: rawUtcDate,
    type: format.Type.DATETIME,
    timezone: format.Timezone.AMERICA_LOS_ANGELES
});

小提示

  • format.Timezone里有所有支持的时区枚举值,直接用枚举比手动写时区字符串更可靠
  • getValue返回的日期时间默认是UTC时区的,所以转换的核心是用N/format模块做时区映射,别再给getValue传时区参数啦,没用的

内容的提问来源于stack exchange,提问作者jk121960

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:14:55