【问题标题】:Conversion of time formats i sheets/excel表格/excel时间格式的转换
【发布时间】:2020-10-20 09:25:40
【问题描述】:

我想找到一个公式来翻译表单上的日期和时间原始文本输出:

May 22, 2018 at 02:17PM

谷歌表格更容易消化的东西,例如:

22/5/2018 14:17:00

这可能吗?我说的是书面月份到计数月份的转换,从 12 小时制到 24 小时制,以及重新安排日期/月份。我觉得有点模棱两可,但有可能吗?

【问题讨论】:

    标签: excel date google-sheets google-sheets-formula data-conversion


    【解决方案1】:

    请使用以下

    =--REGEXREPLACE(A2,"at","")
    

    由于日期/时间是数字,因此您的结果将采用43242.5951388889 的形式

    然后,您可以将菜单 Format--> Number--> Date time 中的结果格式化为标准格式。
    您也可以进一步选择More Formats--> More date and time formats 以获得更多选择。

    (如果仍有问题,请告诉我们)


    加法
    正如JvdV 在他的comment 中所建议的那样,由于REGEXREPLACESUBSTITUTE 更贪婪,人们也可以使用

    =--SUBSTITUTE(A2,"at","")

    【讨论】:

    • 如果 OP 设置了不同的语言环境怎么办?无法在格式中使用英文月份名称。
    • 这是一个很好的答案。我投了赞成票,但我个人无法测试它,因为我的语言环境不承认PM 也不承认May 不幸的是=)。顺便说一句,我认为您可以使用 SUBSTITUTE() 而不是 REGEXREPLACE 来提高性能。
    • @kishkin “如果 OP 设置了不同的区域设置怎么办?将无法在格式中使用英文月份名称。”。我倾向于分享你的担忧。仍然。这不是OP所要求的。我个人倾向于选择紧凑、最小、功能性的解决方案。在这种情况下-在我看来-您建议的公式将是矫枉过正。由 OP 决定。
    • @marikamitsos 是的,这个公式有点长 :) 但是一个独立于语言环境的解决方案。还有为什么--?使用正确的语言环境,它会将字符串转换为日期时间值,对吗?如果是这样,那就太好了。
    • @JvdV 你是对的。 REGEXREPLACESUBSTITUTE 更贪婪。如果您不介意,我可以将您的建议添加到我的回答中。
    【解决方案2】:

    解决方案 1 - 获取日期时间值

    您可以使用公式转换这些类型的字符串,而无需在菜单中设置格式:

    = DATE(
        REGEXEXTRACT(A2, "\d{4}"),
        MATCH(
          LOWER(REGEXEXTRACT(A2, "^\w+")),
          {"jan"; "feb"; "mar"; "apr"; "may"; "jun"; "jul"; "aug"; "sep"; "oct"; "nov"; "dec"},
          0
        ),
        REGEXEXTRACT(A2, "\s(\d{2}),")
      )
    + TIME(
        MOD(REGEXEXTRACT(A2, "(\d+):") + IF(REGEXMATCH(A2, "(?i)\s(?:(?:0?\d|1[^2]):\d+pm|12:\d+am)$"), 12, 0), 24),
        REGEXEXTRACT(A2, ":(\d{2})"),
        0
      )
    

    那么C1 使用这个公式格式化了日期时间:

    =TEXT(B2, "dd/m/yyyy hh:mm:ss")
    

    解决方案 2 - 获取正确的字符串

    =SUBSTITUTE(
      SUBSTITUTE(
        REGEXREPLACE(
          A2,
          "(?i)^\D+(\d+)\D+(\d+)\D+\d+:(\d+)(?:PM|AM)$",
          "$1/month/$2 hour:$3:00"
        ),
        "month",
        MATCH(
          LOWER(REGEXEXTRACT(A2, "^\w+")),
          {"jan"; "feb"; "mar"; "apr"; "may"; "jun"; "jul"; "aug"; "sep"; "oct"; "nov"; "dec"},
          0
        )
      ),
      "hour",
      MOD(REGEXEXTRACT(A2, "(\d+):") + IF(REGEXMATCH(A2, "(?i)\s(?:(?:0?\d|1[^2]):.+pm|12:.+am)$"), 12, 0), 24)
    )
    

    【讨论】:

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