【问题标题】:Best time span (time difference) format for CSVCSV 的最佳时间跨度(时差)格式
【发布时间】:2014-01-25 12:29:01
【问题描述】:

这个问题很像Best timestamp format for CSV/Excel?:

我正在编写一个 CSV 文件。我需要写出至少精确到秒,最好精确到毫秒的时间跨度(也就是时间差)。 CSV 文件中时间戳的最佳格式是什么,以便 Excel 等程序可以在最少的用户干预下准确、明确地解析它们?

最好采用一种即使跨越数天也仍然易于人工解析的格式,即,而不是 265:00:00 一种人类无需在脑海中进行计算就可以发现它是 11 天的格式。

我应该补充一点,我是在 Excel 之外生成 CSV,所以这不是关于获取 Excel 的数据 out 或格式化数据 in Excel,而是如何格式化一个纯 CSV 文件,以便 Excel 和 Humans 都能理解时间跨度值。

【问题讨论】:

    标签: excel csv time spreadsheet


    【解决方案1】:

    对于任意天数,问题不在于创建格式,而是在创建后将 .csv 读回 Excel。例如,如果一个单元格包含:

    134.45632176823
    

    它作为天/时间的值是:

    134 天 10 小时 57 分 6 秒 201 毫秒

    即使您可以格式化单元格以显示:

    134 10:57:06.201

    然后将文件另存为 .csv,,在重新打开文件时,Excel 会将值解释为字符串而不是天/时间(人类不会解释格式的问题)

    编辑#1:

    如果您输入 1.23456789 如果一个单元格并将其格式化为 d hh:mm:ss.000 它将显示为:

    1 05:37:46.666

    如果您随后将文件保存为 .csv 并使用记事本打开 .csv,您将看到原格式文本。但是,如果您使用 Excel 重新打开 .csv,您会发现一个文本单元格,而不是格式为天/时间的数字单元格。

    对于包含标准日期(如 2014 年 1 月 25 日)的单元格,Excel 没有此问题

    【讨论】:

    • 134.45632176823 的问题在于人类无法理解它。我正在寻找我的应用程序可以生成的东西,Excel 不会将其解释为只是一个字符串——如果这可能的话。
    • 如果天数小于或等于 31,那么您可以使用 自定义格式:d hh.mm.ss.000
    • Excel 在 CSV 文件中检测到这种格式?请注意,这个问题不是关于 Excel 中的格式设置。
    • 好的,感谢您的澄清。那么,次优,但很可能没有解决问题的方法。
    • 嗯.....除了“人类理解”的问题,最简单的方法是不带格式的留下值.....可以无误地存储和检索。跨度>
    【解决方案2】:

    我在 Excel 中试过这个

    "y/m/d h:mm:ss.000"
    

    它返回 07/1/10 10:14:02.016 用于 1/1/2007 00:00:00 和 11/1/2014 10:14:02.016 之间的差异

    【讨论】:

    • 那么如果我把那个格式的字符串放到一个CSV文件里用excel打开,会被检测为时差吗?我本来希望它被解析为日期...
    猜你喜欢
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多