NETSUITE开发者实战培训

【知识点/常规踩坑】如何给Date类型字段(正确的)赋值

2019-09-24  本文已影响0人  e85a69573d55

场景

做二开离不开时间日期的处理。作为开发者要产生一个时间对象(Javascript的Date对象),有且只有使用new Date()来实现(使用第三方包也不例外,绕不过)。那么用过这个的开发小朋友应该都会很印象深刻:为什么我new出来的时间存进去后怎么都存不到自己希望的值呢?

NS对于Date的工作原理

在Javascript的解释器中,new Date()的时区取决于运行该脚本的电脑的时区设置。因此在判断我们API的时区时候,我们应该考虑以下事实:

1、因为服务器端脚本是运行在NetSuite的服务器上面的,new Date()应该遵循NetSuite服务器的本地时间设置,服务器端脚本的类型有User Event, Scheduled, Suitelet Script;

2、NetSuite服务器一律采用太平洋时间;

3、客户端脚本是运行在用户的浏览器上;

总结

除开上面讲的,影响我们判断的其实还包括界面端用户的时区设置、脚本运行时当前User的时间日期设置以及运行的脚本使用的是什么角色,其时区也不一定能一致。

为了保持最大程度的灵活性,我们建议系统中的时间日期必须转换好时区后正确的存储下来,这样才能在客户方有其他时区个性化展示的时候可以很快的响应变更。现在很多开发人员都是直接按照平台的时间(很多其实是客户要求如此储存的),这样除开客人最后展示的时间与平台相互,其他的所有跟日期相关的原厂功能都会或多或少有影响(会影响所有报表相关的功能,出现少量偏差)。

开发人员最终还是要根据自身需要确定好自己的方案。自己开发或用第三方库,都应该搞清楚时间日期本地化的运行机制。欢迎留言探讨!

上一篇下一篇

猜你喜欢

热点阅读