Python_datetime
- date(日期)、time(時間)、datetime(date+time)
- timedelta(計算立時期間的型態)、timezone(處理時區資訊的型態)
現在時間
- datetime.now(datetime.today)
- date.today()
- time.localtime()
1 2 3 4 5
| import datetime now = datetime.datetime.now() print(now) today = datetime.datetime.today() print(today)
|
2021-11-01 12:27:19.926574
2021-11-01 12:27:19.926574
1 2 3
| import datetime only_date = datetime.date.today() print(only_date)
|
2021-11-01
1 2
| import time print(time.localtime())
|
time.struct_time(tm_year=2021, tm_mon=11, tm_mday=1, tm_hour=12, tm_min=30, tm_sec=11, tm_wday=0, tm_yday=305, tm_isdst=0)
取得時間參數
1 2 3 4 5
| import datetime today = datetime.datetime.now() print('year:', today.year) print('month:', today.month) print('day:', today.day)
|
year: 2021
month: 11
day: 1
處理日期格式
- datetime.datetime.strptime()
- datetime.datetime.strftime(“%Y/%m/%d %H:%M:%S”):設定輸出格式~
- pd.to_datetime():pandas
1 2 3 4 5
| import datetime date = '2021/06/28' dt = datetime.datetime.strptime(date, "%Y/%m/%d") print("original:", date) print("new:", dt)
|
original: 2021/06/28
new: 2021-06-28 00:00:00
應用
1 2 3 4 5 6
| import datetime date = input("今天日期<2021/11/01>:") dt = datetime.datetime.strptime(date, "%Y/%m/%d") this_year = datetime.datetime.strptime(date[:4]+"/01/01", "%Y/%m/%d") print("今年已經過了",int((dt-this_year).days)+1, "天惹!!")
|
今天日期<2021/11/01>:2021/11/01
今年已經過了 305 天惹!!
1 2 3 4 5 6 7
| import datetime now = datetime.datetime.now() time_del = datetime.timedelta(hours=3) new_dt = now - time_del print("原始時間:", now.strftime("%Y/%m/%d %H:%M:%S")) print("時差時間:", new_dt.strftime("%Y/%m/%d %H:%M:%S"))
|
原始時間: 2021/11/01 12:58:30
時差時間: 2021/11/01 09:58:30
股票應用_交割日期計算
交割日期:
假設投資人在 T日 購買一張股票, T日稱為成交日期。
不過投資人必須要等到 T+1(隔日) 才會收到這張股票。
若是要賣這張股票,也是T+1(隔日)才能賣出。
而這張股票必須支付的股款,必須在T+2早上10點前存入證券交割帳戶,
T+2 也就是所謂的交割日期。
若是T+2早上10點後,戶頭裡面的餘額不夠支付,就會發生違約交割的情形。
股票買賣交易流程:
T日(今天) |
T+1日(明天) |
T+2日(後天10:00) |
購買(賣出)股票 |
取得(失去)股票 |
支出(收入)股款 |
作業一:
每當我們成功買進股票時,券商發送訊息會告知成交的相關訊息,
請設計一程式,將成交回報的字串處理過後,輸出相關的交割資訊來提醒投資人。
input:
"於 7/15 2330 限價 581元 盤中零股現買 20股 已成交"
output:
"您於 7/15 購買 2330,每股 581元 20股"
"提醒您交割日期為 7月17日 10:00,交割款項為 11637元!"
備註:
輸入輸出的各項資訊都是以空格分開
交割款項 = 成交價格 + 券商手續費
成交價格 = 581(成交價) * 20(股數)
券商手續費 = 成交價格 * 0.1425%
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import datetime step = datetime.timedelta(2) data = input("於 7/30 2330 限價 581元 盤中零股現買 20股 已成交\n") s = data.split(' ')
print("\n您於", s[1], "購買", s[2], ",每股", s[4], '共', s[6])
dt = datetime.datetime.strptime(s[1],"%m/%d") day = dt + step day = day.strftime("%m/%d")
price = float(s[4].replace('元',''))
num = int(s[6].replace('股','')) s_price = round(price * num * 0.001425) print("提醒您交割日期為", day, ",交割款項為", price*num+s_price, "元!" )
|
於 7/30 2330 限價 581元 盤中零股現買 20股 已成交
於 7/30 2330 限價 581元 盤中零股現買 20股 已成交
您於 7/30 購買 2330 ,每股 581元 共 20股
提醒您交割日期為 08/01 ,交割款項為 11637.0 元!