##title##

2018年12月7日

Autohotkey:日期轉換加上星期,例如將11/23→11/23(五)

因為常常需要key日期然後加上星期,所以寫了這個很懶惰的東西。

感謝PTT的LPH66大大協助優化腳本。



F1:: ;win+shift+w,將所選日期轉換添加星期,以當年計算 ex:11/23→11/23(五)
OldClip = %Clipboard% ;把目前的剪貼簿內容先存起來
sleep, 200
Send, ^c
sleep, 200
Loop, Parse, Clipboard, /,
{
 if A_Index <= 1 ;第1個循環存入v_month
 v_month = %A_LoopField%
 if A_Index <= 2 ;第2個循環存入v_day
 v_day = %A_LoopField%
}
if v_month < 10 ;小於10加0
v_month = 0%v_month%
if v_day < 10 ;小於10加0
v_day = 0%v_day%
if A_MM > 11 ;如果當前月份大於11(也就是12月)
 {
 if v_month < 6 ;如果要輸入的月份小於6(也就是1~5月)
  {
  v_year := A_YYYY+1
  }
 else ;如果要輸入的月份大於等於6(也就是6~12月)
  {
  v_year := A_YYYY
  }
 }
else ;當前月份小於等於11(也就是1~12月)
 {
 v_year := A_YYYY
 }
FormatTime, TimeString,%v_year%%v_month%%v_day%, WDay
TimeString := TimeString-1
V_CWday := SubStr("日一二三四五六", TimeString+1, 1) ;從字串開始向右複製不超過長度1的子字符串至V_CWday
sleep, 200
Clipboard = %Clipboard%(%V_CWday%)
sleep, 200
Send, ^v
Clipboard = %OldClip% ;恢復先前剪貼簿內容
return



其實還可以再優化一下,例如判斷是年底的最後一個月的時候如果輸入的月份小於6月以前,就用明年搜尋星期。有時間再調整吧。


2018/12/26補充:已調整為月底會改為隔年。邏輯是如果當前月份大於11(也就是12月),且要輸入的月份小於6(也就是1~5月),則用隔年來計算。