【问题标题】:R Package ISO Week Returning incorrect values compared to ISO 8601 in Spotfire与 Spotfire 中的 ISO 8601 相比,R 包 ISO 周返回不正确的值
【发布时间】:2019-12-17 10:37:16
【问题描述】:

在本文之后,我使用 Tibco Spotfire 中的 ISOWeek“R”包返回特定日期的 ISOWeek。

https://community.tibco.com/wiki/tibco-spotfirer-tips-tricks-reusable-simple-easy-iso-week-calculation-spotfire

根据所有网站,2019 年 12 月 1 日是第 48 周。这一天是星期日,ISO 8601 假设一周从星期一开始。

https://www.epochconverter.com/weeks/2019

但是,Spotfire 中的 TERR 函数在通过日期 01-Dec-2019 时会返回第 49 周...几乎就像它使星期日成为一周的开始日一样,这与 ISO 8601 完全矛盾。

这是 Spotfire 输出。

【问题讨论】:

    标签: r spotfire iso terr


    【解决方案1】:

    这确实看起来像一个错误。更可靠的解决方案可能是使用strftime

    strftime("2019-12-1", "%U")
    > "48"
    

    【讨论】:

    • 谢谢 - 这在 Spotfire 客户端中有效,但在网络播放器中仍然给出错误的结果!
    • 我不熟悉 Spotfire。网络播放器是否在您的机器上运行?我认为这取决于网络播放器运行的区域设置。应该设置环境变量LC_TIME="en_GB.UTF-8"。此设置包括从星期一开始的那一周。
    • 如果 8601 需要一周的时间从星期一开始,为什么它需要设置才能使其工作?计算 ISO 周的函数肯定不应该在不同环境中给出不同的结果吗?
    • 这就是为什么我认为它看起来像一个错误。无论如何,我在我自己的系统(Lubuntu 18.04,R 3.6.2,ISOweek 0.6-2)上尝试了它,它给出了你期望的结果(48)。你在什么系统上运行?
    • 客户端运行的是 Windows 10,在本地不工作时不确定 Web 服务器...
    【解决方案2】:

    也许你可以试试format()%V,即,

    d <- as.Date(c("2019-12-01","2019-12-17"))
    w <- format(d,"%V")
    

    这样

    > w
    [1] "48" "51"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 2017-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多