关于日期的问题
$sDate3 = StringRegExpReplace(StringStripWS(GUICtrlRead($Date1), 3), '(\d{4}).+(\d{2}).+(\d{2})', '$1$2$3')$Date4= StringRegExpReplace($Date3,"(\d{4})(\d{2})(\d{2})","$1$2$3")
MsgBox(0,0,$Date4)
我这样怎么获取的日期是空值呢,本来是要转换成数字型的,但是却是空的。不知道要怎么弄才可以。 本帖最后由 水木子 于 2012-4-16 15:45 编辑
GUICtrlRead($Date1) ???
原字符串是什么样的?发来看看!
想要得到什么样的结果也请说明下。 本帖最后由 user3000 于 2012-4-16 16:02 编辑
回复 1# 好好锻炼
修改下, 如果只是转换成纯数字, 用 $Date3 = StringRegExpReplace(GUICtrlRead($Date1), '\D', '')
注意, 月份和日期有可能是一位数字, 而不是总是两位! 回复 2# 水木子
同意,没有源字符,很难判断的 本帖最后由 天煞孤心 于 2012-4-16 16:30 编辑
回复好好锻炼
修改下, 如果只是转换成纯数字, 用 $Date3 = StringRegExpReplace(GUICtrlRead($Date1) ...
user3000 发表于 2012-4-16 15:56 http://www.autoitx.com/images/common/back.gif
\D+ 更好些!
#Include <GuiDateTimePicker.au3>
GUICreate('', 400, 300)
$Date1 = GUICtrlCreateDate('', 100, 100, 200, 21)
_GUICtrlDTP_SetFormat(GUICtrlGetHandle(-1), 'yyyy年MM月dd日')
GUISetState()
$sDate = GUICtrlRead($Date1)
$iDate = StringRegExpReplace($sDate, '\D+', '')
MsgBox(0, '', $iDate)
Do
Until GUIGetMsg() = -3 回复 5# 天煞孤心
未明白'更好'在哪? 效率更高吗?
$Date3 = StringRegExpReplace(GUICtrlRead($Date1), '\D', '')
只是把读到的 GuiCtrlCreateDate 的日期控件的内容转换成纯数字.
我也只是猜测楼主的意图. 回复 6# user3000
嗯!是的\D+效率会更高。
说到这个,就要提到我们的大神P侠,当初我也是这样想的 \D 和 \D+ 效果是一样的。
不过大神说 \D+效率会更高,所以我记住了。 回复 7# 天煞孤心
刚测试了下, \D+ 在这里使用会慢一些!
测试代码:$str = '2012年04月16日'
For $i = 1 To 23; 24以上, 内存就装不下了!
$str &= $str
Next
$time = TimerInit()
$date = StringRegExpReplace($str, '\D+', '')
ConsoleWrite(@CR & '\D+花费时间: ' &TimerDiff($time) & ' 秒')
$time = TimerInit()
$date = StringRegExpReplace($str, '\D', '')
ConsoleWrite(@CR & '\D花费时间: '&TimerDiff($time) & ' 秒' & @CR)我机器的测试结果:
\D+花费时间: 22894.524042641 秒er
\D花费时间: 22368.3747386077 秒
明显前者慢了半秒了! 符合\D规则的字符有两个以上相连的,\D+才能发挥它真正的意义吧!
我是这样想的 回复 2# 水木子
原字符是2012年04月13日这种日期格式的,我想得到20120413数字格式的,因为日期格式的我这里老是查询不对,得不到自己想要的结果。 回复 4# haijie1223
我这是从日期控件获取出来的,原字符是2012年04月13日这种日期格式的,我想得到20120413数字格式的,因为日期格式的我这里老是查询不对,得不到自己想要的结果。 回复 3# user3000
谢谢,你这种方法能得到那种结果,我在测试看看查询上面有没有什么问题。 回复 10# 好好锻炼
5楼不是已经给出了解决方法吗! 回复 8# user3000
$str = 'ABCDEabcde中文测试1234567890'
试试呢? 回复 14# 水木子
呵呵,这就不用测试了, 我看着都知道, 肯定是 \D+ 快
8楼代码只是针对 'yyyy年MM月dd日' 这类数字间只有一非数字字符的情况!
页:
[1]
2