Autohotkey 自动热键:将值设置为DateTime

Autohotkey 自动热键:将值设置为DateTime,autohotkey,Autohotkey,谁能告诉我如何将'01/Jan/1999'设置为日期时间 我尝试过这个,但没有成功: 格式时间,日期,'01/Jan/1999',dd/MMM/yyyy GUI控件,myDate,%datein% dateparse函数起作用了,但是,如何将值设置为datetime 这是我的密码: Gui, Add, DateTime, vmyDate, dd/MMM/yyyy newdate := DateParse("Jan 1 1999") FormatTime, test, % newdate, dd

谁能告诉我如何将'01/Jan/1999'设置为日期时间

我尝试过这个,但没有成功:

格式时间,日期,'01/Jan/1999',dd/MMM/yyyy

GUI控件,myDate,%datein%


dateparse函数起作用了,但是,如何将值设置为datetime

这是我的密码:

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

幸运的是,有人已经为此写了一篇文章

该函数接受大量日期格式,并以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
}

没那么容易。您必须将
01/Jan/1999
转换为
19990101
。一种方法是在每个斜杠(
/
)处拆分日期,然后映射
Jan
Feb
。。。到
01
02
,…哇。。。。这有点难……这实际上是一个意见问题,但这个问题相当琐碎。它可以用5行代码来完成,给或拿。试试看;)如果这对你有帮助,就接受这个答案。你看过文档了吗?