【问题标题】:Convert Epoch timestamp to date format将 Epoch 时间戳转换为日期格式
【发布时间】:2015-08-19 04:18:52
【问题描述】:

我有一个.json 文件,里面有很多文档,每个文档都是这样的:

{"_id":{"$oid":"54ff56116d"},"caption":{"created_time":"1421434541",....}

我需要在我的每个文档中将created_time 转换为日期格式。

你有什么想法吗?

【问题讨论】:

    标签: datetime time epoch


    【解决方案1】:

    由于您有 10 位数字作为创建时间,您可能正在使用“Unix 时间戳”,它计算自 1970-01-01 00:00:00 +00:00(午夜)以来的秒数UTC 或 GMT 时区的 1970 年 1 月 1 日上午)。如果您有 13 位数字,则可能是自 Java 中使用的 The Epoch 以来的毫秒数。还有其他系统,但这是一个合理的猜测。

    有许多函数系统可以将这些值转换为日期。我有一个使用标准库函数的 C 程序,用于验证您的日期:

    $ timestamp 1421434541
    1421434541 = Fri Jan 16 10:55:41 2015
    $ timestamp -u 1421434541
    1421434541 = Fri Jan 16 18:55:41 2015
    $ timestamp -T '%Y-%m-%d %H:%M:%S' -u 1421434541
    1421434541 = 2015-01-16 18:55:41
    $
    

    (当地时区:美国/太平洋,又名美国/洛杉矶。)

    程序使用strtol()将字符串中的数字转换为long,然后使用localtime()gmtime()将其分解为struct tm,然后使用strftime()格式化结果.

    GNU date 命令也可以用来做这些事情:

    $ /usr/gnu/bin/date -d @1421434541 +'%Y-%m-%d %H:%M:%S'
    2015-01-16 10:55:41
    $
    

    由于您尚未确定您的宿主语言,因此实际上不可能告诉您使用什么。不过,几乎可以保证,无论您选择哪种语言,都会有可用于处理转换的代码。

    【讨论】:

    • 谢谢,我没有任何特定的主机语言,但我的操作系统是 Linux。我的主要问题是如何处理 100000 行?我不能一一做,
    • 如何避免一一做呢?您必须阅读 100,000 行(或一行有 100,000 个条目)并在找到时或在找到后使用 JSON 库处理每一行。您没有指定任何有关您使用的语言的信息,因此很难为您提供太多帮助。 GNU date 一次处理一个日期/时间。我的timestamp 可以接受你传递给它的尽可能多的字符串——你的操作系统可能会停止它一次处理它们,但你可以在一次调用中处理数千个。您需要的不仅仅是时间信息……但您还没有说什么。
    • 感谢您的回答!它帮助了我
    猜你喜欢
    • 2017-03-23
    • 2016-11-26
    • 2017-09-01
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 2012-04-01
    相关资源
    最近更新 更多