做量化交易,不可避免会经常处理时间,在Python中时间有很多种时间格式,为了能够实现不同策略的标准化对接,需要搞清楚各种时间格式之间是怎么联系转换的。
世界上有两种标准时间格式:
-
世界协调时间( Coordinated Universal Time,UTC):格林威治标准时间(Greenwich Mean Time,GMT)的加强标准版。
-
夏日节约时间(Daylight Saving Time,DST):在英国则称为夏令时间(Summer Time),是指在夏天太阳升起的比较早时,将时钟拨快一小时,以提早日光的使用。
-
时间的三种格式||Python的时间模块||时间的数据类型
# struct_time格式
print(time.localtime()) # 返回当前时区的时间,UTC+8
>> time.struct_time(tm_year=2019, tm_mon=3, tm_mday=7, tm_hour=22, tm_min=24, tm_sec=49, tm_wday=3, tm_yday=66, tm_isdst=0)
print(time.gmtime()) # 返回0时区的时间
>> time.struct_time(tm_year=2019, tm_mon=3, tm_mday=7, tm_hour=14, tm_min=24, tm_sec=49, tm_wday=3, tm_yday=66, tm_isdst=0)
# 时间戳
print(time.time())
>> 1551968689.9307775
# 格式化的时间格式
x = time.localtime() # struct_time格式
print(time.strftime('%Y-%m-%d %H-%M-%S',x))
>> 2019-03-07 22-45-27
# datetime格式
from datetime import datetime
print(datetime.now()) # 当前时区的时间
>> 2019-03-07 22:59:58.053355
print(datetime(2019,3,7,23,7,1,123456))
>> 2019-03-07 23:07:01.123456
时间格式 | type() | 意义 | 示例 |
---|---|---|---|
struct_time格式 | time.struct_time | tuple元组(内含9个元素) | |
时间戳 | float,int | 从1970.1.1到现在的秒数 | 1551968689.9307775 |
格式化的时间格式 (字符串) | str | 常见的一种 | 2019-03-07 22-31-09 |
datetime格式 | datetime.datetime | 2017-11-28 14:49:43.097000 |
import time
import datetime
# 通过time.localtime()直接转换
print(time.time()) # 时间戳
print(time.localtime(time.time())) # 直接将时间戳转变为struct_time
print(time.localtime())
>> 1551969410.2809792
>> time.struct_time(tm_year=2019, tm_mon=3, tm_mday=7, tm_hour=22, tm_min=36, tm_sec=50, tm_wday=3, tm_yday=66, tm_isdst=0)
>> time.struct_time(tm_year=2019, tm_mon=3, tm_mday=7, tm_hour=22, tm_min=36, tm_sec=50, tm_wday=3, tm_yday=66, tm_isdst=0)
- 时间戳2—>datetime格式
# 通过datetime.fromtimestamp()
x = time.time()
print(datetime.fromtimestamp(x))
>> 2019-03-07 23:03:37.243892
- struct_time1—>时间戳
# 通过time.mktime(x)
x = time.localtime() # struct_time格式
print(time.mktime(x)) # 转变为时间戳
>> 1551969730.0
- struct_time2—>格式化的时间格式
# 通过time.strftime('%Y-%m-%d %H-%M-%S',x)
x = time.localtime() # struct_time格式
print(time.strftime('%Y-%m-%d %H-%M-%S',x))
>> 2019-03-07 22-45-27
- 格式化的时间格式1—>struct_time
# 通过time.strptime(x, '%Y-%m-%d %H-%M-%S')
x = '2019-03-07 22-45-27'
print(time.strptime(x, '%Y-%m-%d %H-%M-%S'))
>> time.struct_time(tm_year=2019, tm_mon=3, tm_mday=7, tm_hour=22, tm_min=45, tm_sec=27, tm_wday=3, tm_yday=66, tm_isdst=-1)
- 格式化的时间格式2—>datetime
# 通过datetime.strptime(x, '%Y-%m-%d %H-%M-%S.%f')
from datetime import datetime
datetime.strptime('2019-03-07 23-18-08.001112','%Y-%m-%d %H-%M-%S.%f')
>> 2019-03-07 23:18:08.001112
- datetime1—>时间戳
# 通过x.timestamp()
from datetime import datetime
x = datetime(2019,3,7,23,9,1)
print(x.timestamp())
>> 1551971221.0
- datetime2—>格式化的时间格式
# 通过x.strftime('%Y-%m-%d %H-%M-%S.%f')
from datetime import datetime
x = datetime(2019,3,7,23,9,1)
print(x.strftime('%Y-%m-%d %H-%M-%S.%f'))
>> 2019-03-07 23-09-01.000000
.
.
.
2019-03-07 23:24:32写于杭州