2013-10-18 65 views
0

誰能告訴我如何將'01/Jan/1999'設置爲DateTime?Autohotkey:將值設置爲DateTime

我已經試過這一點,但沒有奏效:

FormatTime,datein,'01 /月/ 1999' ,DD/MMM/YYYY

GuiControl ,,指明MyDate,%datein%


dateparse函數工作,但是,我該如何設置值的日期時間?

這裏是我的代碼:

Gui, Add, DateTime, vmyDate, dd/MMM/yyyy 
newdate := DateParse("Jan 1 1999") 
FormatTime, test, % newdate, dd/MMM/yyyy 
GuiControl,, myDate, %test% 
+0

這並不那麼容易。您必須將'01/Jan/1999'轉換爲'19990101'。一種方法是在每個斜槓('/')上分割你的日期,然後映射'Jan','Feb',...到'01','02',... – MCL

+0

哇....這很難。 ... – xXKenNXx

+0

這實際上是一個意見問題,但這個問題是微不足道的。它可以通過5行代碼完成,可以進行。只是嘗試;) – MCL

回答

0

幸運的是,已經有人寫了一個Date Parsing Function用於這一目的。

該函數需要大量的日期格式並以YYYYMMDDHH24MISS格式返回它們。然後您可以使用該值與FormatTime

下面是一些例子用法:

newdate := DateParse("Jan 1 1999") 
FormatTime, test, % newdate, dd/MMM/yyyy 
msgbox % test 

DateParse(str) { 
    static e2 = "i)(?:(\d{1,2}+)[\s\.\-\/,]+)?(\d{1,2}|(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\w*)[\s\.\-\/,]+(\d{2,4})" 
    str := RegExReplace(str, "((?:" . SubStr(e2, 42, 47) . ")\w*)(\s*)(\d{1,2})\b", "$3$2$1", "", 1) 
    If RegExMatch(str, "i)^\s*(?:(\d{4})([\s\-:\/])(\d{1,2})\2(\d{1,2}))?" 
     . "(?:\s*[T\s](\d{1,2})([\s\-:\/])(\d{1,2})(?:\6(\d{1,2})\s*(?:(Z)|(\+|\-)?" 
     . "(\d{1,2})\6(\d{1,2})(?:\6(\d{1,2}))?)?)?)?\s*$", i) 
     d3 := i1, d2 := i3, d1 := i4, t1 := i5, t2 := i7, t3 := i8 
    Else If !RegExMatch(str, "^\W*(\d{1,2}+)(\d{2})\W*$", t) 
     RegExMatch(str, "i)(\d{1,2})\s*:\s*(\d{1,2})(?:\s*(\d{1,2}))?(?:\s*([ap]m))?", t) 
      , RegExMatch(str, e2, d) 
    f = %A_FormatFloat% 
    SetFormat, Float, 02.0 
    d := (d3 ? (StrLen(d3) = 2 ? 20 : "") . d3 : A_YYYY) 
     . ((d2 := d2 + 0 ? d2 : (InStr(e2, SubStr(d2, 1, 3)) - 40) // 4 + 1.0) > 0 
      ? d2 + 0.0 : A_MM) . ((d1 += 0.0) ? d1 : A_DD) . t1 
      + (t1 = 12 ? t4 = "am" ? -12.0 : 0.0 : t4 = "am" ? 0.0 : 12.0) . t2 + 0.0 . t3 + 0.0 
    SetFormat, Float, %f% 
    Return, d 
} 
+0

哇...不錯的一個...我希望這會工作... – xXKenNXx

+0

如果它幫助你,接受這個答案。 –

+0

它的工作,但我現在的問題是把解析值的日期時間... – xXKenNXx