날짜시간
In [2]:
time_str = '2015-07-08 11:39:28'
year = time_str[:4]
month = time_str[5:7]
day = time_str[8:10]
print('{}년 {}월 {}일'.format(year, month, day))
In [4]:
time_str = 'July 8 15'
year = time_str[:4]
month = time_str[5:7]
day = time_str[8:10]
print('{}년 {}월 {}일'.format(year, month, day))
In [3]:
start_day = '2014-06-28'
end_day = '2015-07-08'
how_many_days = end_day - start_day
print(how_many_days)
In [125]:
from datetime import datetime
In [12]:
now = datetime.now()
now
Out[12]:
In [4]:
dt = datetime(2011,10,29,20,30,21)
print(dt.day)
print(dt.minute)
In [127]:
middle_age = datetime(1050, 1,1)
middle_age
Out[127]:
In [5]:
dt.date()
Out[5]:
In [6]:
dt.time()
Out[6]:
datetime을 특정한 문자열 형식으로 출력
In [19]:
now = datetime.now()
print(now.strftime('%b/%d/%Y %H:%M %A'))
print(now.strftime('%Y-%m-%d %H:%M %a'))
문자열로부터 datetime 객체 생성
In [23]:
datetime.strptime('20091009', '%Y%d%m')
Out[23]:
In [25]:
# 2015-07-08 14:20 문자열을 datetime 객체로 변환
# 참조: https://docs.python.org/2/library/datetime.html
datetime.strptime('15-07-08 14:20', '%y-%m-%d %H:%M')
Out[25]:
In [32]:
now = datetime.now()
print(now+100) # 오류! 100초? 100일? 100년?
In [35]:
now = datetime.now()
diff = now-datetime(1982,12,27)
print(diff)
print(type(diff))
print(now-diff)
In [36]:
from datetime import timedelta
now-timedelta(days=30)
Out[36]:
시간값 비교
In [39]:
now > datetime(1982, 12,27)
Out[39]:
In [40]:
now == datetime(1982, 12,27)
Out[40]:
In [42]:
datetime(2015,7,30) < now+timedelta(days=30)
Out[42]:
In [58]:
import random
from datetime import datetime, timedelta
# 주식 가격 시뮬레이션
def gen_stock_price(output_file, days=1000):
# 주식의 최초 가격 설정
price = 1000
# 기록 시작일 설정
day = datetime.now() - timedelta(days=days)
# 지정된 일수만큼 모의 데이터 생성
logs = []
for i in range(days):
# [-3, 3] 범위의 무작위 정수값을 생성
random_diff = random.randint(-3,3)
# 주식 가격의 등락을 시뮬레이션
price += random_diff
# 파일로 출력할 문자열 설정
price_log = '{}: {}\n'.format(day.strftime('%Y-%m-%d'), price)
logs.append(price_log)
# 다음날로 설정
day += timedelta(days=1)
# 파일 출력
f = open(output_file, 'w')
f.writelines(logs)
f.close()
In [123]:
gen_stock_price('sim_stock.txt')
In [116]:
def calc_profit(filename):
# 파일에서 데이터를 읽어오기
f = open(filename)
price_log = []
for line in f.readlines():
datetime_str, price = tuple(line[:-1].split(':'))
day = datetime.strptime(datetime_str, '%Y-%m-%d')
price_log.append((day, int(price)))
f.close()
# 수익률 계산 구간 날짜 지정
end_day = datetime.now() - timedelta(days=7)
start_day = end_day - timedelta(days=90)
# 각 날짜의 가격 가져오기
start_end_price = []
for log in price_log:
if start_day.date() == log[0].date() or end_day.date() == log[0].date():
start_end_price.append(log)
# 수익률 계산
profit = (start_end_price[1][1] - start_end_price[0][1])/float(start_end_price[0][1])
return profit
In [124]:
from __future__ import print_function
profit = calc_profit('sim_stock.txt')
print('{:.2%}'.format(profit))
In [ ]: