如何将 Excel 中的日期转换为 ISO 8601 格式

Posted

技术标签:

【中文标题】如何将 Excel 中的日期转换为 ISO 8601 格式【英文标题】:How to convert a date in Excel to ISO 8601 format 【发布时间】:2015-02-07 22:11:29 【问题描述】:

我正在尝试将日期格式保存为 YYYY-MM-DD,例如 2014-09-01 作为 CSV 文件,但是当我这样做时,格式会恢复为 M/D/YYYY 格式。

我尝试在 Excel 中将日期转换为字符串,但每次打开 CSV 文件时,它都会返回 M/D/YYYY 格式。我需要将 ISO 8601 日期格式保存在 CSV 文件中。我该怎么做?

【问题讨论】:

是的,M/D/Y 格式没什么用——你不能在上面按日期排序,这违反了我们在 1 年级学到的东西——数字的最高有效数字在左边,右边最不重要(一百/十/单位,记住)。因此,千年(即数千年)显然比数百、数十、年单位、数十个月、月单位、数十天、天单位更重要。不知道为什么人们在 21 世纪仍然使用 M/D/Y - 它应该被禁止。 【参考方案1】:

基本功能是:

=TEXT(A1,"yyyy-mm-ddThh:MM:ss")

使用它可以将您的 Excel 日期列转换为单独的 ISO 8601 日期列。接下来,将 ISO 8601 列复制到原件上(特殊粘贴:仅粘贴值)。 删除计算出来的 ISO 8601 列,这些列现在有垃圾,因为 Excel 在 ISO 8601 日期上很烂。

您现在有一个转换后的 CSV 或 TSV 或诸如此类的东西。只需保存为原始格式并忽略愚蠢的 Excel 抱怨它不是其本机文件格式,以及您将如何通过另存为 CSV 文件以某种方式“输掉”,并尽量不去想您生命中被微软偷走的时间用那个愚蠢的对话框。

【讨论】:

【参考方案2】:

您可以设置一个单元格,例如:

右键单击单元格>单元格格式>类别>自定义>类型>写这个:

aaaa-mm-jjThh:mm:ss (french format here)
yyyy-mm-ddThh:MM:ss (english format)

【讨论】:

另外,毫秒为:yyyy-mm-ddThh:MM:ss.000 我更喜欢使用这种方法,在 Excel 中保持时间和日期(不仅仅是文本字符串),但我不知道如何添加时区日期,例如:@ 987654322@ 表示相对于 GMT 为 +08 小时的西澳大利亚时区。【参考方案3】:

作为非英语用户的注意事项。我花了一段时间才弄清楚,格式字符串对您的区域设置/语言环境很敏感。例如。我的格式设置为德语:

=TEXT(C2;"jjjjMMtt")

(虽然 OS 和 Excel 设置为英文。)

【讨论】:

我认为你应该使用 =TEXT(A2;"jjjjMMtt") 代替,或者你显示分钟而不是月份【参考方案4】:

您可以直接跳到核选项:将计算机的“区域和语言”设置更改为使用“yyyy-MM-dd”短日期格式。

【讨论】:

从格式为 21-6-2019 的 csv 开始。确保您的区域设置相同。双击 CSV 以在 Excel 中打开(不要使用数据/来自文本,这是行不通的。不要问我为什么)。 Excel 会将日期识别为日期。现在选择每个日期列并将日期格式更改为 2019-06-21。 Excel 2016。【参考方案5】:

我复制粘贴@Dirk Bester的公式above:

=TEXT(A1,”yyyy-mm-ddThh:MM:ss”)

但它不起作用,Excel 2010 抱怨高低。也就是说,直到我将引号从某种“智能引号”更改为普通的旧 ASCII 0x22 引号:

=TEXT(A1,"yyyy-mm-ddThh:MM:ss")

现在它就像一个魅力。

【讨论】:

奇怪,想知道那些是怎么溜进去的。智能引号真的很蠢。【参考方案6】:

我相信您可能已经在 .csv 文件中创建了正确的格式。

但 Excel 会自动将其强制转换为您在打开 .csv 文件时提到的格式的日期值。一种解决方案可能是导入 .csv 文件而不是打开它,并在从文本获取外部数据的第 3 步中,确保在适当的情况下为列数据格式选择文本。

【讨论】:

在记事本中打开 CSV 文件来测试这个理论。 Excel 太聪明了,有时它自己也有好处。【参考方案7】:

FWIW,以上所有方法都不适用于具有 16 世纪日期的 Excel,例如26-08-1558 表示 1558 年 8 月 26 日。因此,为了将其转换为 ISO 日期,我使用了:

=RIGHT(D2|4)&"-"&MID(D2|4|2)&"-"&LEFT(D2|2)

【讨论】:

【参考方案8】:
=DATEVALUE(LEFT(A1;10))

我用过

【讨论】:

以上是关于如何将 Excel 中的日期转换为 ISO 8601 格式的主要内容,如果未能解决你的问题,请参考以下文章

如何正确地将数据帧的所有日期时间列转换为 iso 格式

如何将excel中的三列数值转换成一列日期

在excel中日期格式如何转换成常规格式?

将 ISO 8601 日期时间字符串转换为 **Date** 对象时,如何将日期时间重新定位到当前时区?

在excel中如何将输入的数字自动转换为日期

如何配置 web api 的 json 序列化器将日期时间转换为 ISO 8601 格式?