【问题标题】:Trying to Modify a Script to Take Timestamp Date Format Instead of %Y-%m-%d Format [Python]尝试修改脚本以采用时间戳日期格式而不是 %Y-%m-%d 格式 [Python]
【发布时间】:2018-03-10 05:46:38
【问题描述】:

以时间戳格式(例如 1504159200)从 csv 中提取日期。
我将这些插入到适合 Y-m-d 格式的脚本中。

[代码是一个庞大的 LSTM 脚本,因此希望原始行和我在它们上尝试的内容就足够了]

startDate = 1504159200  
endDate = 1519974000

未经修改的原始行...

sd = datetime.strptime(startDate, '%Y-%m-%d')
ed = datetime.strptime(endDate, '%Y-%m-%d')

Traceback (most recent call last):
File "stocks.py", line 91, in <module>
p, n = Main(['last_vix_92_18.csv', '1504159200', '1519974000', 'D'])
File "stocks.py", line 78, in Main
P = sp.PredictDate(args[1], args[2], predPrd)
File "/home/eagle/predict/dragon/pythonml-master/Stocks/StockPredictor.py", line 282, in PredictDate
ts = DateRange(startDate, endDate, period)[::-1]
File "/home/eagle/predict/dragon/pythonml-master/Stocks/StockPredictor.py", line 30, in DateRange
sd = datetime.strptime(startDate, '%Y-%m-%d')
File "/usr/lib/python3.5/_strptime.py", line 510, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "/usr/lib/python3.5/_strptime.py", line 343, in _strptime
(data_string, format))
ValueError: time data '1504159200' does not match format '%Y-%m-%d'

我尝试修改代码,出现以下错误。

sd = datetime(int(startDate)).timestamp()
ed = datetime(int(endDate)).timestamp()  

Traceback (most recent call last):
File "stocks.py", line 91, in <module>
p, n = Main(['last_vix_92_18.csv', '1504159200', '1519974000', 'D'])
File "stocks.py", line 78, in Main
P = sp.PredictDate(args[1], args[2], predPrd)
File "/home/eagle/predict/dragon/pythonml-master/Stocks/StockPredictor.py", line 284, in PredictDate
ts = DateRange(startDate, endDate, period)[::-1]
File "/home/eagle/predict/dragon/pythonml-master/Stocks/StockPredictor.py", line 31, in DateRange
sd = datetime(int(startDate)).timestamp()
TypeError: Required argument 'month' (pos 2) not found

【问题讨论】:

    标签: python csv datetime


    【解决方案1】:

    只需使用datetime.datetime.fromtimestamp:

    from datetime import datetime
    
    datetime.fromtimestamp(1504159200)  # datetime.datetime(2017, 8, 31, 2, 0)
    datetime.fromtimestamp(1519974000)  # datetime.datetime(2018, 3, 2, 2, 0)
    

    【讨论】:

    • 谢谢。不知何故,我无法在任何地方找到“fromtimestamp”。我看了一会儿,我发誓。最终适用于我的案例的代码略有不同。只有一个“约会时间”。 sd = datetime.fromtimestamp(int(startDate)) ed = datetime.fromtimestamp(int(endDate))
    • @Renoldus 那是因为您必须已经导入了datetime 子模块...正在更新示例。
    • 我明白了。这适用于任何模块吗?只需加倍,您不必导入它?我每天都在学习。
    • @Renoldus 不一定...包结构因包而异。
    • 我不敢相信我在这篇文章中找到了我的解决方案,lolz,datetime.fromtimestamp 就像一个魅力!
    猜你喜欢
    • 1970-01-01
    • 2022-06-12
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    • 2020-06-22
    相关资源
    最近更新 更多