【问题标题】:Google Sheet App Script to toLocaleString returning M01 not January谷歌表格应用脚本 toLocaleString 返回 M01 而不是一月
【发布时间】:2021-12-13 05:18:46
【问题描述】:

我从一个单元格调用了以下应用程序脚本,我预计结果是 1 月,但 M01 又回来了。这种一般逻辑在其他地方使用得很好,所以不太确定我做错了什么。 getFullYear 工作正常。

提前感谢您的帮助。

function actualBudget(date) {
 const dateObj = new Date(date)
 const month = dateObj.toLocaleString('default', { month: 'long' })
 const year = dateObj.getFullYear().toString()
 return month
}

【问题讨论】:

    标签: javascript date google-apps-script google-sheets intl


    【解决方案1】:

    我遇到了同样的问题。当时,问题的原因是语言环境值。所以,我认为当我看到你的脚本时,default locale 可能是你的问题的原因。那么比如从default修改为en-US怎么样呢?

    发件人:

    const month = dateObj.toLocaleString('default', { month: 'long' })
    

    收件人:

    const month = dateObj.toLocaleString("en-US", { month: 'long' });
    
    • 在这种情况下,请将en-US 修改为您要使用的语言环境。

    注意:

    • 不使用自定义函数时,可以使用Session.getActiveUserLocale().replace("_", "-")。但在自定义函数的情况下,Session.getActiveUserLocale() 返回空值。因为脚本不是由活动用户运行的。因此,我建议手动设置语言环境。

    参考:

    【讨论】:

    • 不幸的是,它在使用“en-US”时提供了相同的结果。你的解释很有道理,我认为就是这样。
    • 太奇怪了,我在做了其他事情后又回到了这个问题上,真的没有改变任何东西,它正在工作。也许我胖拇指的东西。非常感谢。
    • @JAK 感谢您的回复。很高兴您的问题得到解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多