【问题标题】:errno 22 when convering timestamp to date将时间戳转换为日期时出现 errno 22
【发布时间】:2021-05-20 22:51:27
【问题描述】:

我正在尝试将从代码 API 获得的时间戳转换为人类可读的日期。 我的代码如下;你能帮我找出我做错了什么吗?

谢谢!!

import ccxt
from datetime import datetime
from datetime import timezone
import pytz
kraken = ccxt.kraken()
kraken_price = kraken.fetch_ticker('BTC/USD')
kraken_time = kraken_price['timestamp']
kraken_date = datetime.fromtimestamp(int(kraken_time)).strftime('%y-%m-%d %H:%M:%S')/1000
print(kraken_date)
print('Ask price for Kraken ${}'.format(kraken_price['ask']))

附:我在python中这样做

【问题讨论】:

  • 始终将完整的错误消息(从单词“Traceback”开始)作为文本(不是屏幕截图,不是链接到外部门户)有问题(不是评论)。还有其他有用的信息。
  • strftime() 给出了字符串,但您尝试将此字符串除以 1000 ?这是没有意义的,它应该给出错误。也许你应该划分原始值 - kraken_price['timestamp']/1000
  • errno 的值为 22 是 EINVAL,“无效参数”。但是你怎么知道errno 是 22?您的代码不会检查 errno

标签: python unix-timestamp


【解决方案1】:

我不知道你是怎么得到error 22的,但是当我运行它时,我得到了错误

 ValueError: year 53354 is out of rang

因为你必须除掉原始值

 kraken_time = kraken_price['timestamp']/1000

而不是用strftime()分割字符串


import ccxt
from datetime import datetime
from datetime import timezone
import pytz

kraken = ccxt.kraken()
kraken_price = kraken.fetch_ticker('BTC/USD')
kraken_time = kraken_price['timestamp']/1000
kraken_date = datetime.fromtimestamp(int(kraken_time)).strftime('%y-%m-%d %H:%M:%S')
print(kraken_date)
print('Ask price for Kraken ${}'.format(kraken_price['ask']))

结果:

21-05-21 01:04:56
Ask price for Kraken $41232.8

顺便说一句: 我记得error 22 可能意味着打开文件有问题,我在您的代码中看不到任何文件。或者这可能意味着从服务器下载数据存在问题。但是您没有显示完整的错误消息,因此我们无法检查问题所在。

【讨论】:

  • 感谢弗拉斯!你的解决方案奏效了。我把分区放错了!非常感谢!
猜你喜欢
  • 2023-03-29
  • 1970-01-01
  • 2016-11-26
  • 2020-10-19
  • 2017-04-25
  • 2022-01-08
相关资源
最近更新 更多