Necromorph Posted March 9, 2010 Posted March 9, 2010 i need a good func for $starttime=GUICtrlCreateDate("", -1, -1, -1, -1, $DTS_TIMEFORMAT) $endtime=GUICtrlCreateDate("", -1, -1, -1, -1, $DTS_TIMEFORMAT) _GUICTRLDTP_SETFORMAT($starttime, "hh:mm tt") _GUICTRLDTP_SETFORMAT($endtime, "hh:mm tt") $totaltime=GUICtrlRead($endtime)-GUICtrlRead($starttime) i just need to figure out the time diffrence but i need it to work with am/pm. thanks.
Beege Posted March 9, 2010 Posted March 9, 2010 Check out function _DateDiff(). It should do what you need. Assembly Code: fasmg . fasm . BmpSearch . Au3 Syntax Highlighter . Bounce Multithreading Example . IDispatchASMUDFs: Explorer Frame . ITaskBarList . Scrolling Line Graph . Tray Icon Bar Graph . Explorer Listview . Wiimote . WinSnap . Flicker Free Labels . iTunesPrograms: Ftp Explorer . Snipster . Network Meter . Resistance Calculator
Necromorph Posted March 9, 2010 Author Posted March 9, 2010 (edited) im probably looking into this wrong, but im not sure how. expandcollapse popup#Include <GUIConstantsEX.au3> #Include <ComboConstants.au3> #Include <EditConstants.au3> #Include <Date.au3> #Include <DateTimeConstants.au3> #Include <GuiDateTimePicker.au3> Global $gui1 = GUICreate("redLabel worklog", 350, 450) GUICtrlCreateLabel("company", 25, 25) $tCompany = GUICtrlCreateCombo("all", 25, 40, 50, DEFAULT, $CBS_DROPDOWNLIST) GUICtrlSetData(-1, "AEC") GUICtrlSetData(-1, "AMS") GUICtrlSetData(-1, "CW") GUICtrlSetData(-1, "DTA") GUICtrlSetData(-1, "MF") GUICtrlCreateLabel("user assisted (if applicable)", 125, 25) $tUser = GUICtrlCreateInput("", 125, 40, 200) GUICtrlCreateLabel("date", 25, 85) $tDate = GUICtrlCreateMonthCal("", 25, 100, 220, 175) GUICtrlCreateLabel("start time", 255, 115) $tStartTime = GUICtrlGetHandle(GUICtrlCreateDate("", 255, 130, 70, -1, $DTS_TIMEFORMAT)) GUICtrlCreateLabel("end time", 255, 165) $tEndTime = GUICtrlGetHandle(GUICtrlCreateDate("", 255, 180, 70, -1, $DTS_TIMEFORMAT)) GUICtrlCreateLabel("time spent", 255, 215, 50) $tTT = _DateDiff('h', $tStartTime, $tEndTime) $tTotalTime = GUICtrlCreateInput("", 255, 230, 70) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlCreateLabel("task(s) performed", 25, 300) $tTask = GUICtrlCreateInput("", 25, 315, 300, 50) $tViewLog = GUICtrlCreateButton("&open log", 25, 400, 75) $tEmailLog = GUICtrlCreateButton("&email log", 100, 400, 75) $tCancel = GUICtrlCreateButton("&cancel <", 175, 400, 75) $tLogEntry = GUICtrlCreateButton("&log entry >", 250, 400, 75) GUISetState() _GUICTRLDTP_SETFORMAT($tStartTime, "hh:mm tt") _GUICTRLDTP_SETFORMAT($tEndTime, "hh:mm tt") While 1 $msg1 = GUIGetMsg() Switch $msg1 Case $tEndTime GUICtrlSetData($tTotalTime, $tTT) Case $GUI_EVENT_CLOSE, $tCancel EXIT Case $tViewLog ShellExecute(@SCRIPTDIR &"\worklog2010.txt") Case $tEmailLog _tEmailLog() EndSwitch Wend Func _tEmailLog() Local $gui2 = GUICREATE("redLabel worklog", 250, 200) GUICtrlCreateLabel("select date range to attach to email", 25, 25) GUICtrlCreateLabel("start date", 25, 50) $tStartDate = GUICtrlCreateDate("", 25, 65, 200) GUICtrlCreateLabel("end date", 25, 100) $tEndDate = GUICtrlCreateDate("", 25, 115, 200) $tCancelAttachLog = GUICtrlCreateButton("&cancel <", 75, 150, 75) $tAttachLog = GUICtrlCreateButton("&attach >", 150, 150, 75) GUISetState() GUISwitch($gui2) While 1 $msg2 = GUIGetMsg() Switch $msg2 Case $GUI_EVENT_CLOSE, $tCancelAttachLog GUIDelete() GUISwitch($gui1) Return Case $tAttachLog GUISetState(@SW_HIDE) EndSwitch WEND EndFunc its not updating the $tTotalTime inputbox. Edited March 9, 2010 by redLabel
Beege Posted March 9, 2010 Posted March 9, 2010 You are sending _Datediff() 2 handles which is not going to work. Also that fuction requires date and time. Ill take a closer look. get back to ya in a bit. Assembly Code: fasmg . fasm . BmpSearch . Au3 Syntax Highlighter . Bounce Multithreading Example . IDispatchASMUDFs: Explorer Frame . ITaskBarList . Scrolling Line Graph . Tray Icon Bar Graph . Explorer Listview . Wiimote . WinSnap . Flicker Free Labels . iTunesPrograms: Ftp Explorer . Snipster . Network Meter . Resistance Calculator
Beege Posted March 9, 2010 Posted March 9, 2010 Ok take a look at this. Func _24Hour turns your AM PM time back to 24 hour so you can use it with _DateDiff(). I swear there was a function that did this already but maybe not. I also made _Datediff() return seconds so then you can calc hours and mins. expandcollapse popup#Include <GUIConstantsEX.au3> #Include <ComboConstants.au3> #Include <EditConstants.au3> #Include <Date.au3> #Include <DateTimeConstants.au3> #Include <GuiDateTimePicker.au3> Global $gui1 = GUICreate("redLabel worklog", 350, 450) GUICtrlCreateLabel("company", 25, 25) $tCompany = GUICtrlCreateCombo("all", 25, 40, 50, DEFAULT, $CBS_DROPDOWNLIST) GUICtrlSetData(-1, "AEC") GUICtrlSetData(-1, "AMS") GUICtrlSetData(-1, "CW") GUICtrlSetData(-1, "DTA") GUICtrlSetData(-1, "MF") GUICtrlCreateLabel("user assisted (if applicable)", 125, 25) $tUser = GUICtrlCreateInput("", 125, 40, 200) GUICtrlCreateLabel("date", 25, 85) $tDate = GUICtrlCreateMonthCal("", 25, 100, 220, 175) GUICtrlCreateLabel("start time", 255, 115) $tStartTime = GUICtrlCreateDate("", 255, 130, 70, -1, $DTS_TIMEFORMAT) GUICtrlCreateLabel("end time", 255, 165) $tEndTime = GUICtrlCreateDate("", 255, 180, 70, -1, $DTS_TIMEFORMAT) GUICtrlCreateLabel("time spent", 255, 215, 50) $tTotalTime = GUICtrlCreateInput("", 255, 230, 70) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlCreateLabel("task(s) performed", 25, 300) $tTask = GUICtrlCreateInput("", 25, 315, 300, 50) $tViewLog = GUICtrlCreateButton("&open log", 25, 400, 75) $tEmailLog = GUICtrlCreateButton("&email log", 100, 400, 75) $tCancel = GUICtrlCreateButton("&cancel <", 175, 400, 75) $tLogEntry = GUICtrlCreateButton("&log entry >", 250, 400, 75) GUISetState() _GUICTRLDTP_SETFORMAT(GUICtrlGetHandle($tStartTime), "hh:mm tt") _GUICTRLDTP_SETFORMAT(GUICtrlGetHandle($tEndTime), "hh:mm tt") While 1 $msg1 = GUIGetMsg() Switch $msg1 Case $tEndTime $sDate = '2010/01/01 '; Put Date here $tTT = _DateDiff('h', $sDate & _24Hour(GUICtrlRead($tStartTime)), $sDate & _24Hour(GUICtrlRead($tEndTime))) GUICtrlSetData($tTotalTime, $tTT) Case $GUI_EVENT_CLOSE, $tCancel EXIT Case $tViewLog ShellExecute(@SCRIPTDIR &"\worklog2010.txt") Case $tEmailLog _tEmailLog() EndSwitch Wend Func _24Hour($Time) Local $New_Time, $PM = False If StringInStr($Time, 'PM') Then $PM = True $Time = StringLeft($Time, 5) $Hour = Number(StringLeft($Time, 2)) $Min = Number(StringTrimLeft($Time, 3)) If $PM Then $Hour += 12 Return $Hour & ':' & $Min & ':00' EndFunc Func _tEmailLog() Local $gui2 = GUICREATE("redLabel worklog", 250, 200) GUICtrlCreateLabel("select date range to attach to email", 25, 25) GUICtrlCreateLabel("start date", 25, 50) $tStartDate = GUICtrlCreateDate("", 25, 65, 200) GUICtrlCreateLabel("end date", 25, 100) $tEndDate = GUICtrlCreateDate("", 25, 115, 200) $tCancelAttachLog = GUICtrlCreateButton("&cancel <", 75, 150, 75) $tAttachLog = GUICtrlCreateButton("&attach >", 150, 150, 75) GUISetState() GUISwitch($gui2) While 1 $msg2 = GUIGetMsg() Switch $msg2 Case $GUI_EVENT_CLOSE, $tCancelAttachLog GUIDelete() GUISwitch($gui1) Return Case $tAttachLog GUISetState(@SW_HIDE) EndSwitch WEND EndFunc Assembly Code: fasmg . fasm . BmpSearch . Au3 Syntax Highlighter . Bounce Multithreading Example . IDispatchASMUDFs: Explorer Frame . ITaskBarList . Scrolling Line Graph . Tray Icon Bar Graph . Explorer Listview . Wiimote . WinSnap . Flicker Free Labels . iTunesPrograms: Ftp Explorer . Snipster . Network Meter . Resistance Calculator
picea892 Posted March 9, 2010 Posted March 9, 2010 Hi, I've had many problems with dates...Maybe some of these functions will help you 1) Change from 24 hours to AM/PM func Formatdate($start) ; Format time for calendar $h=StringMid($start,9,2) $min=StringMid($start,11,2) if $h<10 then $h= stringright($h,1) If $h > 12 Then $h = $h - 12 $min = $min & " PM" ElseIf $h = 12 Then $min = $min & " PM" Else $min = $min & " AM" EndIf $time=$h&":"&$min if $time="0:00 AM" then $time="All Day Event" Return $time EndFunc 2)Change from 12 to 24 func twelveto24($time) if StringRight($time,2)="am" then if number(StringLeft($time,2))>9 Then $time=StringLeft($time,5) Else $time="0"&StringLeft($time,4) EndIf Else $tempnumb=Number(stringleft($time,2))+12 if number(StringLeft($time,2))>9 Then $time=$tempnumb&Stringmid($time,3,3) Else $time=$tempnumb&Stringmid($time,2,3) EndIf EndIf Return $time EndFunc 3)letter date to number date (may need to change "-" to "/") func datetonum($string) if StringInStr($string,"January") then $mon=01 if StringInStr($string,"February") then $mon=02 if StringInStr($string,"March") then $mon=03 if StringInStr($string,"April") then $mon=04 if StringInStr($string,"May") then $mon=05 if StringInStr($string,"June") then $mon=06 if StringInStr($string,"July") then $mon=07 if StringInStr($string,"August") then $mon=08 if StringInStr($string,"September") then $mon=09 if StringInStr($string,"October") then $mon=10 if StringInStr($string,"November") then $mon=11 if StringInStr($string,"Decenber") then $mon=12 if StringMid($string,stringinstr($string,",")-2,1)=" " then $days ="0"&StringMid($string,stringinstr($string,",")-1,1) Else $days =StringMid($string,stringinstr($string,",")-2,2) EndIf $years=StringRight($string,4) if Number($mon)>9 then $returnvar=($years&"-"&$mon&"-"&$days) if Number($mon)<10 then $returnvar=($years&"-0"&$mon&"-"&$days) Return $returnvar EndFunc
Necromorph Posted March 9, 2010 Author Posted March 9, 2010 @beege thank you very much for your help, you func is a little complex for my understanding of autoit so far. the minutes do not calculate, but the hours do. thanks again for all your help!!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now