Yahoo Finance中的解密日期序列号

时间:2015-05-11 23:31:31

标签: python python-3.x

我需要帮助解密此网址末尾的日期编号:view-source:http://finance.yahoo.com/q/op?s=XOM&date=1434672000 - 它看起来不像是一个公历的格里高利序列号,但在雅虎它指定2015年6月19日。我的目标是编写一个Python代码段,它将从我输入的yyyymmdd创建一个有效的Yahoo日期编号,这样我就可以为任何股票代码(不仅仅是XOM)和选项到期日期生成一个有效的URL,表示为yyyymmdd。谢谢!

3 个答案:

答案 0 :(得分:2)

这是一个UNIX时间戳 - 自1970年1月1日以来的秒数。

>>> time.gmtime(1434672000)
time.struct_time(tm_year=2015, tm_mon=6, tm_mday=19, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=170, tm_isdst=0)

答案 1 :(得分:1)

您可以使用datetime.fromtimestamp将时间戳转换为日期时间对象:

from datetime import  datetime

url="http://finance.yahoo.com/q/op?s=XOM&date=1434672000"

print(datetime.fromtimestamp(float(url.rsplit("=",1)[1])))
2015-06-19 01:00:00

print(datetime.fromtimestamp(float(url.rsplit("=",1)[1])).date())
2015-06-19

要使用日期字符串创建时间戳,请使用strptime创建日期时间对象,然后调用.timestamp()

dte = "2015-06-19"
print(datetime.strptime(dte,"%Y-%m-%d").timestamp())

使用urllib.parse可能是提取日期的更好方法:

from datetime import  datetime

url="http://finance.yahoo.com/q/op?s=XOM&date=1434672000"

from urllib.parse import parse_qs

print(datetime.fromtimestamp(float(parse_qs(url)["date"][0])))

答案 2 :(得分:0)

谢谢;现在我知道如何使用时间戳(解密并创建它)两种方式。关于创建它,当我发现以下用于从ddmmmyyyy字符串创建时间戳的代码时我发现了日历模块(我在shell中测试了这段代码):

#----------------- Create time stamp
import time
import datetime
import calendar

# oxdt stands for 'option expiration date'
oxdt_txt = '15may2015'
oxdt = datetime.datetime.strptime(oxdt_txt, '%d%b%Y')
print(oxdt_txt)
print(oxdt)
print(calendar.timegm(oxdt.utctimetuple()))
print()

oxdt_txt = '19jun2015'
oxdt = datetime.datetime.strptime(oxdt_txt, '%d%b%Y')
print(oxdt_txt)
print(oxdt)
print(calendar.timegm(oxdt.utctimetuple()))
#----------------- done