【问题标题】:Google Sheets: convert string to date谷歌表格:将字符串转换为日期
【发布时间】:2019-05-08 08:36:23
【问题描述】:

我必须关注日期字符串:

2019-05-07T19:00:00.000Z

我现在想将日期和时间转换为 2 个单元格,但它仍然不适用于日期。我试过了:

=LEFT(F2; FIND("T"; F2) - 1)

结果:

2019-05-07

但我无法将其转换为像 DD.MM.YYYY 这样的日期。如果我手动输入“2019-05-07”,我可以转换它 - 但它不能与导入的数据一起转换。为什么?

我也有同样的时间问题。

【问题讨论】:

  • 可能是=text(text(text(day(LEFT(C8,FIND("T",C8)-1)),"00") & "/" & text(month(LEFT(C8,FIND("T",C8)-1)),"00") &"/"& year(LEFT(C8,FIND("T",C8)-1)),"0000"),"dd.MM.yyyy")?
  • 太棒了,这行得通!以及如何在另一个单元格中获得“19:00”?
  • 也许只是MID(F2, 12, 5)?或=text(MID(F2, 12, 5), "hh:mm")。如果格式始终相同,我不确定您是否真的需要在单元格中找到 T。也不需要正则表达式
  • 非常感谢,这是解决方案:=MID(G2; 12; 5)
  • 还有没有不清楚的地方?你需要任何调整吗?您的示例暗示您的字符串始终采用相同的格式,因此似乎没有必要使用正则表达式,但如果您需要使用更混乱的数据,请告知 - 然后像 REGEXEXTRACT(F2, "^([0-9][0-9-]+)")REGEXEXTRACT(F2, "T([0-9]+:[0-9]+)") 这样的东西会派上用场

标签: regex date google-sheets google-sheets-formula


【解决方案1】:

如果字符串值的格式始终相同,则不需要正则表达式甚至 FIND

获取日期

=text(text(text(day(LEFT(F2, 10)),"00") & "/" & text(month(LEFT(F2, 10)),"00") &"/"& year(LEFT(F2, 10)),"0000"),"dd.MM.yyyy")

text(..., "dd.MM.yyyy") 将转换重新格式化的日期字符串)和时间

=MID(F2, 12, 5)

查看 Google 表格截图:

【讨论】:

    【解决方案2】:

    使用这个:

    ={TEXT(DATE(LEFT(A13, 4), MID(A13, 6, 2), MID(A13, 9, 2)), "dd.MM.yyyy"),
     REGEXEXTRACT(A13, "T(.*)\.")}
    

    【讨论】:

      【解决方案3】:

      为了回答您的问题,尽管表面上,文本函数(例如 LEFT 和 TEXT)返回的字符串不会自动尝试转换为可能会以日期格式显示的数字。

      但是,这可以通过VALUE 函数强制执行。因此将 VALUE 包裹在您尝试过的内容中,如下所示:

      =value(LEFT(F2; FIND("T"; F2) - 1))
      

      对于您的示例,当使用自定义格式格式化时,应该返回 07.05.2019

      dd.mm.yyyy
      

      由于标记为,您可以申请:

      =split(regexreplace(F3;"[A-Z]";" ");" ")
      

      在分割空格之前用空格替换TZ,因为格式看起来可能是一致的(例如总是24 个字符),但更短的版本是:

      =split(left(F2;23);"T")
      

      为每个日期和时间应用适当的格式。

      应用,如在评论中,

      =MID(G2; 12; 5)
      

      MID 也是一个文本函数的潜在缺点(因此不适合,例如,使用 AM/PM 进行方便的格式化)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-28
        • 2014-09-30
        • 1970-01-01
        • 2014-01-18
        • 2019-10-13
        相关资源
        最近更新 更多