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