Jump to content

Date in particular format


Recommended Posts

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.

Link to post
Share on other sites

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.

;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 by ur
Link to post
Share on other sites

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

 

Link to post
Share on other sites

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

 

Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By nacerbaaziz
      it recomended to use the builten function
      _DateDiff
       
       
       
      hello autoit team
      i made a simple function to help me get the difference between to date
      i liked to share it with you
      the paramatrs of this function
      is firstdate and lastedate
      the two params is as the following
      year/month/day hours:minuts:seconds
      here is the function
       
      #include <date.au3> func _dateBetween($s_firstDate, $s_lastDate = default) if not (StringRegExp($s_firstDate, "((\d{4})\/(\d{2})\/(\d{2})\s(\d{2})\:(\d{2})\:(\d{2}))", 0) = 1) then Return SetError(1, 0, 0) if $s_lastDate = default then $s_lastDate = @year & "/" & @mon & "/" & @mday & " " & @hour & ":" & @min & ":" & @sec if not (StringRegExp($s_lastDate, "((\d{4})\/(\d{2})\/(\d{2})\s(\d{2})\:(\d{2})\:(\d{2}))", 0) = 1) then Return SetError(2, 0, 0) local $a_FirstSplitDate = StringSplit(StringRegExpReplace($s_firstDate, "((.*)\s(.*))", "$2"), "/", 2) local $a_FirstSplitTime = StringSplit(StringRegExpReplace($s_firstDate, "((.*)\s(.*))", "$3"), ":", 2) local $a_lastSplitDate = StringSplit(StringRegExpReplace($s_lastDate, "((.*)\s(.*))", "$2"), "/", 2) local $a_LastSplitTime = StringSplit(StringRegExpReplace($s_lastDate, "((.*)\s(.*))", "$3"), ":", 2) local $i_firstDateValue = _DateToDayValue($a_FirstSplitDate[0], $a_FirstSplitDate[1], $a_FirstSplitDate[2]) local $i_LastDateValue = _DateToDayValue($a_LastSplitDate[0], $a_LastSplitDate[1], $a_LastSplitDate[2]) if $i_firstDateValue > $i_LastDateValue then Return SetError(3, 0, 0) local $i_totalDays = $i_LastDateValue-$i_firstDateValue if not ($i_totalDays = 0) then if $a_FirstSplitTime[0] <= $a_lastSplitTime[0] then $i_totalDays += 1 $a_lastSplitTime[0] -= $a_FirstSplitTime[0] elseIf $a_FirstSplitTime[0] > $a_lastSplitTime[0] then if $i_totalDays > 0 then $i_totalDays -= 1 $a_FirstSplitTime[0] -= $a_lastSplitTime[0] endIf endIf endIf local $i_totalYears = 0 if $i_totalDays >= 365 then While $i_totalDays >= 365 $i_totalYears += 1 $i_totalDays -= 365 Wend endIf local $i_TotalMonths = 0 if $i_totalDays >= 30 then While $i_totalDays >= 30 $i_totalMonths += 1 $i_totalDays -= 30 Wend endIf local $i_totalWeeks = 0 if $i_totalDays >= 7 then While $i_totalDays >= 7 $i_totalWeeks += 1 $i_totalDays -= 7 Wend endIf $i_totalSeconds = ((($a_FirstSplitTime[0]*60)*60)+($a_FirstSplitTime[1]*60)+($a_FirstSplitTime[2]))-((($a_lastSplitTime[0]*60)*60)+($a_lastSplitTime[1]*60)+($a_LastSplitTime[2])) local $minus = "" if $i_totalSeconds < 0 then $minus = "-" $i_totalSeconds = StringReplace($i_totalSeconds, "-", "") endIf local $i_totalHours = 0 if $i_totalSeconds >= 3600 then While $i_totalSeconds >= 3600 $i_totalHours += 1 $i_totalSeconds -= 3600 Wend endIf local $i_totalminuts = 0 if $i_totalSeconds >= 60 then While $i_totalSeconds >= 60 $i_totalminuts += 1 $i_totalSeconds -= 60 Wend endIf local $a_arrayReturn[7] $a_arrayReturn[0] = $i_totalYears $a_arrayReturn[1] = $i_totalMonths $a_arrayReturn[2] = $i_totalWeeks $a_arrayReturn[3] = $i_totalDays $a_arrayReturn[4] = $minus & $i_totalHours $a_arrayReturn[5] = $minus & $i_totalminuts $a_arrayReturn[6] = $minus & $i_totalSeconds return $a_arrayReturn endFunc  
      here is an example
       
       
      $a_calc = _dateBetween("2015/02/12 23:00:05", "2030/02/12 23:25:50") msgBox(64, "result", StringFormat("the difference is : %i years and %i months and %i weeks and %i days and %i hours and %i minuts and %i seconds", $a_calc[0], $a_calc[1], $a_calc[2], $a_calc[3], $a_calc[4], $a_calc[5], $a_calc[6]))  
      am waiting for your comments
      with my greetings
    • By Jahar
      Hi All,
      Please help me on how to fetch date/time of last windows 10 system restore point using autoit? Basically its about querying the last restore point.
    • By TheDcoder
      Hi everyone,
      I am bit stumped as to why I am not able to set the time in the Date control
      #include <DateTimeConstants.au3> #include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3> Example() Func Example() GUICreate("My GUI get date", 200, 200, 800, 200) Local $idDate = GUICtrlCreateDate("1953/04/25", 10, 10, 185, 20, $DTS_TIMEFORMAT) ; to select a specific default format Local $sStyle = "HH:mm:ss" GUICtrlSendMsg($idDate, $DTM_SETFORMATW, 0, $sStyle) ; Set time Local $iRet = GUICtrlSetData($idDate, '13:33:37') ConsoleWrite('GUICtrlSetData returned ' & ($iRet = 1 ? 'success' : 'failure') & @CRLF) GUISetState(@SW_SHOW) ; Loop until the user exits. While GUIGetMsg() <> $GUI_EVENT_CLOSE WEnd MsgBox($MB_SYSTEMMODAL, "Time", GUICtrlRead($idDate)) EndFunc ;==>Example The documentation for GUICtrlSetData clearly mentions that it uses the same format as GUICtrlRead:
      But I get failure
      What gives?
      Thanks for the help in advance!
    • By Jeep
      Here is an other UDF for string handling :
      Date handling
      _StringDateConvert:  convert a date from one format ("YMD", "MDY" or "DMY") to another.
      _StringIsDate:  checks if a date with a given format is valid
      String management
      _StringCount: count of occurrences that appear in a string
      _StringFormatBytesSize: formatting a dimension expressed in bytes (bytes) in MB, TB, ...)
      _StringIsEndingWith: check if a string end with some characters
      _StringIsStartingWith: check if a string start with some characters
      _StringJoinArray:  concatenate elements of an array to rebuild a string
      _StringPadLeft: filling a string with characters on the left
      _StringPadRight: fill a string with characters on the right
      _StringRemoveFrenchAccent: remove french accent
      _StringRemoveChars: deleting characters from a string
      _StringStrip: eliminate characters at the begin and/or at the  end of a string
      _StringTitleCaseFrench: capitalize the first letter of each word with elimination of french accents
      _StringWSClean: simple replacement of "White Spaces",  remove beginning and trailing spaces and multiple spaces removal
      Any comments, suggestions for improvement or constructive criticism are welcome.
      Below you will find the UDF and a demo program. 
       
       
      JPD_String.zip
    • By Skeletor
      Hey All,
      I'm trying to set the date using a variable.
      Basically, I set the date into the input box, then I change the input box, say, I change the year.
      Then I set what I typed into the input box into the Date Picker.

      This is a demo code.
      #include <ButtonConstants.au3> ;Start GUI includes #include <EditConstants.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <DateTimeConstants.au3> #include <GUIConstantsEx.au3> #include <GuiDateTimePicker.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 615, 438, 192, 124) $Date1 = GUICtrlCreateDate("2019/02/02 23:16:26", 80, 64, 186, 21, $DTS_SHORTDATEFORMAT) $Input1 = GUICtrlCreateInput("Input1", 80, 152, 185, 21) $Button1 = GUICtrlCreateButton("Set data", 176, 96, 75, 25) $Button2 = GUICtrlCreateButton("Read from input", 176, 200, 75, 25) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 $Read = GUICtrlRead($Date1) GUICtrlSetData($Input1, $Read) MsgBox(-1, "", $Read) Case $Button2 $Read = GUICtrlRead($Input1) $New_date = StringReplace($Read, "/", "") $DAY = StringLeft($New_date, 2) $MON = StringMid($New_date, 4, 3) $YEAR = StringRight($New_date, 4) MsgBox(-1, "", $DAY & $MON & $YEAR) ;_GUICtrlDTP_SetFormat($hWndDate, "yyyy/MM/dd") $DateFormate = ($DAY & " " & $MON & " " & $YEAR) $DTM_SETFORMAT_ = 0x1032 ; $DTM_SETFORMATW GUICtrlSendMsg($Date1, $DateFormate, 0, "MM/dd/yyyy") EndSwitch WEnd  
×
×
  • Create New...