ur Posted December 22, 2016 Posted December 22, 2016 When I tried the below code, I am getting the date in mm-dd-yyyy format. But I require dd-mm-yyyy format. Can anyone suggest how to do that. Func TodaysDate() return StringReplace(_DateTimeFormat(_NowCalc(), 2), "/", "-") EndFunc Earlier I tried dd-mmm-yyyy format and it is working with below code. Func TodaysDate() $NewDate = _DateTimeFormat(_NowCalcDate(),1) $Array = StringSplit( $NewDate , ',' ) _ArrayDelete($Array, 0) _ArrayDelete($Array, 0) $Array1 = StringSplit($Array[0],' ') RemoveEmptyArrayLines($Array1) $Date = StringStripWS($Array1[2]&"-"&StringLeft($Array1[1], 3)&"-"&$Array[1], $STR_STRIPALL) return $Date EndFunc Which is unnecessarily complicated I feel., the approach Now I need format of dd-mm-yyyy. Can anyone suggest how to do this.
ur Posted December 22, 2016 Author Posted December 22, 2016 (edited) Don't know whether it is a good approach or not. The below code is working..... This is the code I added to convert dd-mmm-yyyy to dd-mm-yyyy. expandcollapse popup;To convert mmm to mm format Func changeDateformat($sText) Local $sMsg = StringStripWS($sText, $STR_STRIPALL) Switch $sMsg Case "Jan" $sMsg = 1 Case "Feb" $sMsg = 2 Case "Mar" $sMsg = 3 Case "Apr" $sMsg = 4 Case "May" $sMsg = 5 Case "Jun" $sMsg = 6 Case "Jul" $sMsg = 7 Case "Aug" $sMsg = 8 Case "Sep" $sMsg = 9 Case "Oct" $sMsg = 10 Case "Nov" $sMsg = 11 Case "Dec" $sMsg = 12 EndSwitch return $sMsg EndFunc Func TodaysDate() $NewDate = _DateTimeFormat(_NowCalcDate(),1) $Array = StringSplit( $NewDate , ',' ) _ArrayDelete($Array, 0) _ArrayDelete($Array, 0) $Array1 = StringSplit($Array[0],' ') RemoveEmptyArrayLines($Array1) ;Will return the present day's date with format dd-mmm-yyyy ;$Date = StringStripWS($Array1[2]&"-"&StringLeft($Array1[1], 3)&"-"&$Array[1], $STR_STRIPALL) $Date = StringStripWS($Array1[2]&"-"&changeDateformat(StringLeft($Array1[1], 3))&"-"&$Array[1], $STR_STRIPALL) return $Date EndFunc Func RemoveEmptyArrayLines(ByRef $arrLines) $intCount = 1 While $intCount < UBound($arrLines) $arrLines[$intCount] = StringStripWS($arrLines[$intCount],$STR_STRIPLEADING + $STR_STRIPTRAILING) If StringLen($arrLines[$intCount])=0 Then _ArrayDelete($arrLines, $intCount) $intCount = $intCount - 1 EndIf $intCount = $intCount + 1 WEnd EndFunc Edited December 22, 2016 by ur
ur Posted December 22, 2016 Author Posted December 22, 2016 I forgot add this function to my question. Func RemoveEmptyArrayLines(ByRef $arrLines) $intCount = 1 While $intCount < UBound($arrLines) $arrLines[$intCount] = StringStripWS($arrLines[$intCount],$STR_STRIPLEADING + $STR_STRIPTRAILING) If StringLen($arrLines[$intCount])=0 Then _ArrayDelete($arrLines, $intCount) $intCount = $intCount - 1 EndIf $intCount = $intCount + 1 WEnd EndFunc
Malkey Posted December 22, 2016 Posted December 22, 2016 Reply to post #1 - Date to dd-MM-yyyy. #include <Date.au3> MsgBox(0, "Result", "Date: " & _TodaysDate() & @CRLF) Func _TodaysDate() Return StringRegExpReplace(_NowCalc(), "(\d{4})/(\d{2})/(\d{2}) (\d{2}):(\d{2}):(\d{2})", "${3}-${2}-${1}") EndFunc ;==>_TodaysDate Reply to post #2 - Date to dd-MMM-yyyy. #include <GUIConstantsEx.au3> #include <GuiDateTimePicker.au3> #include <Date.au3> ConsoleWrite(_DateFormat("2016/12/21", "dd-MMM-yyyy") & @CRLF) ConsoleWrite("==================" & @CRLF) ConsoleWrite(_DateFormat("2016/12/21 13:11:02", "ddd MMM dd, yyyy hh:mm:ss tt gg") & @CRLF) ConsoleWrite("==================" & @CRLF) ConsoleWrite(_DateFormat("13:11:02", "h:mm tt") & @CRLF) ConsoleWrite("==================" & @CRLF) Func _DateFormat($DateTime, $sFormat) If StringRegExp($DateTime, "\d{4}/\d{1,2}/\d{1,2}") = 0 Then $DateTime = _NowCalcDate() & " " & $DateTime GUICreate("DateTimePick Set Format", 400, 300) Local $idDate = GUICtrlCreateDate($DateTime, 2, 6, 190) GUICtrlSendMsg($idDate, 0x1032, 0, $sFormat) Return GUICtrlRead($idDate) EndFunc ;==>_DateFormat #cs ; Returns:- 21-Dec-2016 ================== Wed Dec 21, 2016 01:11:02 PM A.D. ================== 1:11 PM ================== #ce Reply to post #3 - another similar method to remove empty elements in an array. #include <Array.au3> #include <StringConstants.au3> Local $arr[7] = [0, "", " 1 ", " 2 ", "3 ", " 4", " "] _ArrayDisplay($arr, "Before") RemoveEmptyArrayLines($arr) _ArrayDisplay($arr, "After") Func RemoveEmptyArrayLines(ByRef $arrLines) For $intCount = UBound($arrLines) - 1 To 0 Step -1 $arrLines[$intCount] = StringStripWS($arrLines[$intCount], $STR_STRIPLEADING + $STR_STRIPTRAILING) If $arrLines[$intCount] = "" Then _ArrayDelete($arrLines, $intCount) EndIf Next EndFunc ;==>RemoveEmptyArrayLines
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