【问题标题】:Convert 7 or 8 digit number to true date将 7 或 8 位数字转换为真实日期
【发布时间】:2017-04-03 22:43:33
【问题描述】:

我有一列以这种格式 mmddyyyy 的日期,我想知道是否可以将其解析或转换为 mm/dd/yyyy。我尝试选择整行,然后单击格式-> 数字-> 日期,但是当我这样做时,诸如 12082016 之类的日期变为 6/7/34979,这当然毫无意义。有关如何解决此问题的任何想法?

编辑:

Examples:

 7072016   12/11/2021
 1202017    12/2/2017
10042016    10/4/2016
 9212016    8/12/2023

我将 B 更改为 F,因为那是日期列所在的位置。奇怪的是有些值是正确的

=date(right(B2, 4), left(B2, 2), mid(B2, 3, 2))

【问题讨论】:

  • 在 excel 中使用文本到列,固定宽度,MDY,完成。不要认为 google-sheets 的 text-to-columns 是这样工作的。
  • 你可以在=date(right(B2, 4), left(B2, 2), mid(B2, 3, 2)) 中使用“帮助”列吗?
  • 这似乎有点实际,格式正确但实际日期错误。有关如何正确设置的更多信息?
  • 日期怎么不对?您能否发布更多关于您拥有的数据的示例?
  • 完成!我刚刚编辑了帖子

标签: date google-sheets date-conversion


【解决方案1】:

您必须同时考虑 7 位和 8 位数字。显然,您在导入数据时丢失了一些前导零。

=date(right(right("0"&A2, 8), 4), left(right("0"&A2, 8), 2), mid(right("0"&A2, 8), 3, 2))
' or,
=--replace(replace(right("0"&A2, 8), 5, 0, "/"), 3, 0, "/")

将单元格格式化为mm/dd/yyy 或您希望的任何格式;他们现在是真实的日期。

【讨论】:

    【解决方案2】:

    如果您使用的是 Google 表格,则需要将包含数字的列格式化为 00000000,以确保包含完整的 8 位数字,包括小于 10 个月的前导零。为此,突出显示带有 MMDDYYYY 数字的列,然后从 Format 菜单中选择 Number,然后选择 Custom Number Format

    然后,在出现的对话框中,输入00000000(八个零)并点击应用

    您的数据将被重新格式化并且您的日期应该是正确的:

    希望这会有所帮助!

    【讨论】:

    • 因此 google-sheet 的工作表函数适用于显示的(格式化的)数字,而不是原始基础数字。嗯。不知道。巧妙的把戏! +1
    • Excel 不适用于格式化数字——在这种情况下,您的答案是正确的选择。
    【解决方案3】:

    日期和时间值基本上是一系列数字,这就是为什么它总是将其转换为格式化的日期或时间。 Bttr 使用自定义格式,或根据需要更改默认值。 如果您想将任何数字转换为日期, 首先写入一年中的第一个日期,将其转换为数字,获取趋势,写入 nXt 值,并转换为适当的格式。

    【讨论】:

      【解决方案4】:

      用正则表达式试试这个公式:

      =TEXT(REGEXREPLACE(TEXT(A1,"00000000"),"(\d{2})+(\d{2})+(\d{4})","$1/$2/$3"),"m/d/yyyy")

      m/d/yyyy 更改为您需要的任何日期格式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-13
        • 2020-09-19
        • 1970-01-01
        • 2016-06-19
        • 2014-03-09
        • 1970-01-01
        相关资源
        最近更新 更多