尝试使用以下代码时:



//Placed here for continuity sake
var inputData = {
    content: 'Created: 2018-03-06T13:58:35.660Z\nName: Operator\nText: test\n\nCreated: 2018-03-06T14:00:16.093Z\nName: Operator\nText: test'
    }
//Actual code in Zap
var transcript = inputData.content.replace(/(\d{4})(-(\d{2}))??(-(\d{2}))??(T(\d{2}):(\d{2})(:(\d{2}))??(\.(\d+))??(([\+\-]{1}\d{2}:\d{2})|Z)??)??$/gm,function(x){
                var dtin = new Date(Date.parse(x));
                var dtout = dtin.toLocaleString('en-US',{timeZone: "America/New_York",hour12: true});
                return dtout;
                })

//return {content : transcript}; commented in favor of console.log for here only
console.log(transcript);





转换的时区部分不会发生。测试该步骤时不会遇到任何错误,它不会转换为EST时区,就像通过toLocaleString()函数在其他地方所做的一样。

有什么想法吗?

最佳答案

timeZonetoLocaleString参数是ECMAScription Internationalization API的一部分。这是一个可选的API,因为无需支持它就可以构建NodeJS。

在您提供注释的process.versions输出中,由于没有报告icu版本,因此会出现,实际上您正在运行的Node实例是在没有国际化支持的情况下构建的。有关更多详细信息,请参见the NodeJS documentation

此外,它是Node的旧版本。我不熟悉Zapier,但在these Zapier docs中看到它们允许您通过更新zapier-platform-core文件中的package.json版本来使用较新版本。您可能想要设置>=3.10.10并查看它是否选择了较新的Node版本,也许是具有完整的Intl timeZone支持的版本。

关于javascript - Zapier代码(NodeJS)到LocaleString()timeZone,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49137345/

10-14 19:40
查看更多