找回密码
 加入
搜索
查看: 4141|回复: 10

[AU3基础] 如何转换字符串至DateTime格式

 火.. [复制链接]
发表于 2012-4-7 19:18:38 | 显示全部楼层 |阅读模式
有没什么函数可以转换字符串至DateTime格式的?

如,转换20120407165907为2012-04-07 16:59:07!

谢谢!
发表于 2012-4-7 19:41:57 | 显示全部楼层
没有现成的函数转换, 可以自己用 StringMid 建立一个函数吧?
关键是要转换的字符串怎么生成的?
发表于 2012-4-7 20:13:10 | 显示全部楼层
用正则替换一次就行了。
Local $Str = '20120407165907'
Local $Test = StringRegExpReplace($str, '(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)', '$1-$2-$3 $4:$5:$6')
MsgBox(0, '替换结果', $Test)

评分

参与人数 1金钱 +10 收起 理由
user3000 + 10

查看全部评分

 楼主| 发表于 2012-4-7 20:14:41 | 显示全部楼层
回复 3# afan


    谢谢!正则不会,自己简单写了个函数...汗...还是正则好
Func ChangeStringToDate($String)
        ;string格式 20120407165853
        ;year
        $year=StringLeft($String,4)
        ;month
        $mon=StringMid($String,5,2)
        ;day
        $mday=StringMid($String,7,2)
        ;hour
        $hour=StringMid($String,9,2)
        ;min
        $min=StringMid($String,11,2)
        ;sec
        $sec=StringRight($String,2)
        
        $tFile = _Date_Time_EncodeFileTime($mon, $mday, $year, $hour, $min, $sec)
        Return(_Date_Time_FileTimeToStr($tFile,1))
EndFunc

评分

参与人数 1金钱 +10 收起 理由
user3000 + 10 恭喜自力更生

查看全部评分

发表于 2012-4-7 20:53:25 | 显示全部楼层
本帖最后由 半芯竹 于 2012-4-7 20:57 编辑

Local $a='20120407165907'
MsgBox(0,0,StringFormat("%04s-%02s-%02s %02s:%02s:%02s\n", StringMid ($a,1,4), StringMid ($a,5,2), StringMid ($a,7,2),StringMid ($a,9,2),StringMid ($a,11,2),StringMid ($a,13,2)))


我的是麻烦了点。。。呵呵。还能看懂。。。。
发表于 2012-4-7 21:47:40 | 显示全部楼层
自己写一个

#Include <Date.au3>

$time = MyStrtoDateTime("20120407165907")
If "error" = $time Then
        MsgBox(16, "", "失败")
Else
        MsgBox(0, "", $time)
EndIf

Func MyStrtoDateTime($mystr)
        Local $ret = ""
        Local $len = StringLen($mystr)
        If 14 = $len Then
                Local $array = StringToASCIIArray($mystr)
                Local $i
                For $i = 0 To UBound($array)-1
                        If $array[$i]<Asc("0") Or $array[$i]>Asc("9") Then ExitLoop
                Next
                If 0 = $i - UBound($array) Then
                        For $i = 0 To UBound($array)-1
                                $array[$i] -= Asc("0")
                        Next
                        If $array[4]*10+$array[5]<1 Then
                                $ret = "error - 月份最小是1"
                        ElseIf $array[4]*10+$array[5]>12 Then
                                $ret = "error - 月份最大是12"
                        ElseIf $array[6]*10+$array[7]<1 Then
                                $ret = "error - 号数最小是1"
                        ElseIf $array[6]*10+$array[7]>31 Then
                                $ret = "error - 号数最大是12"
                        ElseIf $array[8]*10+$array[9]>23 Then
                                $ret = "error - 小时最大是23"
                        ElseIf $array[10]*10+$array[11]>59 Then
                                $ret = "error - 分钟最大是59"
                        ElseIf $array[12]*10+$array[13]>59 Then
                                $ret = "error - 秒数最大是59"
                        ElseIf ( (2 = $array[4]*10+$array[5]) And $array[6]*10+$array[7]  > _ 
                                        28+_DateIsLeapYear($array[0]*1000+$array[1]*100+$array[2]*10+$array[3]) ) Then
                                        $ret = "error - " & $array[0]*1000+$array[1]*100+$array[2]*10+$array[3] & _ 
                                                "的2月只有" & 28+_DateIsLeapYear($array[0]*1000+$array[1]*100+$array[2]*10+$array[3]) & "天!"
                        Else
                                $ret &= StringMid($mystr, 1, 4)
                                $ret &= "-" & StringMid($mystr, 5, 2)
                                $ret &= "-" & StringMid($mystr, 7, 2)
                                $ret &= " " & StringMid($mystr, 9, 2)
                                $ret &= ":" & StringMid($mystr, 11, 2)
                                $ret &= ":" & StringMid($mystr, 13, 2)
                        EndIf
                Else
                        $ret = "error - 有字母标点等非数字字符"
                EndIf
        Else
                $ret = "error - 空字符串或长度不等14"
        EndIf
        Return $ret
EndFunc
发表于 2012-4-7 22:03:13 | 显示全部楼层
a版的正则简单有效,学习了!
发表于 2012-4-7 22:27:16 | 显示全部楼层
对比之下,看出正则的强大之处!
发表于 2012-4-7 23:00:53 | 显示全部楼层
用正则替换一次就行了。
afan 发表于 2012-4-7 20:13



   

A版的正则简洁。一行搞定
发表于 2012-4-9 11:14:33 | 显示全部楼层
正规表达式强大呀
发表于 2012-4-24 13:48:58 | 显示全部楼层
题楼主感谢回帖的朋友,学习了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-30 13:18 , Processed in 0.179486 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表