【问题标题】:Spotfire: Convert string date to datetimeSpotfire:将字符串日期转换为日期时间
【发布时间】:2021-05-31 17:13:09
【问题描述】:

我觉得这很容易,但我就是无法破解它并且在它上面花费了太多时间。我正在尝试将 w2037.4 09:00 转换为日期时间。

我最终希望以上时间为 09/10/2020 09:00。

我试过 ParseDate(RXReplace([value],"w"," ","i"),"yyww.d HH:mm") 但这绝对不是。

感谢任何帮助,谢谢。

【问题讨论】:

    标签: calculated-columns spotfire


    【解决方案1】:

    我希望这会有所帮助,即使它没有提供完整的答案。

    我认为您要查找的日期是 9 月 10 日(而不是我最初认为的 10 月 9 日 - 请记住指定日期格式,因为它们因国家/地区而异)。 据我了解,您原来的专栏是由

    • 一个 w 字符
    • 2020 年的最后两位数
    • 第 37 周
    • 第 4 天
    • 然后是时间部分

    我在 Spotfire 中找不到可以为您提供星期和星期几的日期的功能。可以用 TERR 表达式吗?

    对于您给出的具体示例,这对我有用,但它不是万无一失的 - 星期和星期几很棘手,因为它们取决于您的本地/区域设置。就我而言,我减去了一天以使其正常工作,但您可能不想要它。此外,开源 R 和 TERR 对周格式给出不同的结果。

    所以我使用的TERR Expression函数是:

    mydatetime=sapply(input1,function(x) sub('w','',x)) #remove the w
                              
    turnToDate = function(x) {
      x.vector=strsplit(x,' ')[[1]] #separate date and time parts
      x.date=x.vector[1] #store date portion
      #is this correct? Remove if not!
      x.date=as.character(as.numeric(x.date)+.1) #add a day
      x.time=x.vector[2] #store time portion
      y.date=as.Date(x.date,format = "%y%W.%w",tz='GMT') #convert week to date
      y.datetime=paste(y.date,x.time) #add time as string
      return (as.POSIXct(y.datetime,origin="1970-01-01 00:00:00"))
    }                 
    #do not use sapply as dates turn to numbers
    output=Reduce(c,lapply(mydatetime,turnToDate))
    

    我创建了它(从数据>数据函数属性>表达式函数菜单),名称为 TERR_convert,作为返回日期时间的列函数。然后创建了一个计算列:

    TERR_convert([value])
    

    【讨论】:

    • 嗨,盖亚,感谢您的回复。我以前从未使用过 TERR 表达式,但我确实尝试过。 "无法执行TERR方法调用(3)Ticks必须在DateTime.MinValue.Ticks和DateTime.MaxValue.Ticks之间。参数名称:ticks"
    • 对不起,我不明白蜱是什么。您能否发布数据的 sn-p 以及您如何创建和调用 TERR 表达式?
    猜你喜欢
    • 2015-09-17
    • 2019-04-12
    • 2011-09-08
    • 2015-03-24
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多