【问题标题】:Non-standard Julian day time stamp非标准儒略日时间戳
【发布时间】:2021-08-09 22:28:03
【问题描述】:

我有一个非标准格式的时间戳,它是多个元素的串联。我想至少将字符串的最后一部分转换为小时/分钟/秒/十进制秒,这样我就可以计算它们之间的时间间隔(通常为 2-5 秒)。 我看过这个链接,但它假设一个“正确的”朱利安时间。 How to convert Julian date to standard date?

我的时间戳是这样的

1380643373

设置为 ddd hh mm ss.s 这个时间戳代表第 138 天,06:43:37.3

是否有使用这个的日期时间方法,或者我需要去掉各个部分(hh、mm、ss.s)并以某种方式连接它们?因为我只对秒感兴趣,如果我可以提取它们,如果第二个时间戳小于第一个时间戳,我可以通过添加 60 来处理这个问题 - 即事件超过分钟更改边界。

【问题讨论】:

  • 时间戳是整数还是字符串?
  • 它是文本文件的一部分,因此默认情况下可能是一个字符串,但我会将其提取到数据帧中,或者如果更简单,可以即时进行数学运算。

标签: python-3.x timestamp


【解决方案1】:

如果你只对秒感兴趣,你可以这样做:

timestamp = 1380643373
seconds = (timestamp % 1000) / 10 # Gives 37.3

timestamp % 1000 为您提供timestamp 的最后三位数字。然后你将它除以 10 得到秒。

如果是字符串,可以通过切片取最后三个字符。

timestamp = "1380643373"
seconds = int(timestamp[-3:]) / 10 # Gives 37.3

重复使用divmod() 函数将时间戳转换为日期时间非常容易:

import datetime

base_date = datetime.datetime(2000, 1, 1, 0, 0, 0) # Midnight on Jan 1 2000


timestamp = 1380643373

timestamp, seconds = divmod(timestamp, 1000) # Gives 1380643, 373
seconds = seconds / 10 # Gives 37.3

timestamp, minutes = divmod(timestamp, 100) # Gives 13806, 43

days, hours = divmod(timestamp, 100) # Gives 138, 6


tdelta = datetime.timedelta(days=days, hours=hours, minutes=minutes, seconds=seconds) # Gives datetime.timedelta(days=138, seconds=24217, microseconds=300000)
new_date = base_date + tdelta

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-11
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    相关资源
    最近更新 更多