nacerbaaziz Posted June 7, 2018 Posted June 7, 2018 Hello I have a question please How to show Islamic date in Autoit I mean for example Ramadan month And moharam month ... etc I hope my question is clear for you Thanks in advance
Moderators Melba23 Posted June 7, 2018 Moderators Posted June 7, 2018 nacerbaaziz, You should know by now that we help you get your script working - not write code from scratch. What have you tried that has not worked? M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
nacerbaaziz Posted June 7, 2018 Author Posted June 7, 2018 Hello again my dear @Melba23 I do not know if there is a function in the language responsible for providing the islamic date Or another method So I could not find an entrance to try working But I am in dire need of this Please help me by giving me any way to get Islamic date using autoit
Moderators Melba23 Posted June 7, 2018 Moderators Posted June 7, 2018 nacerbaaziz, Quote is a function in the language responsible for providing the islamic date No. Have you searched for an algorithm in any language which will allow you to convert normal dates into islamic dates? If so let us know and we can try and convert it into AutoIt. If not - than I suggest you do so rather then expect us to do it for you. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
nacerbaaziz Posted June 7, 2018 Author Posted June 7, 2018 (edited) this is a function to converte the date to hijri date using cpp I do not understand ith cpp language so I hope you will help me in converting this function to autoit language void gregorian_to_hijri(int* h_y, int* h_m, int* h_d, int g_y, int g_m, int g_d) { int year, month, day; int zyr; int zd; int zm; int zy; float zjd; int zl; int zn; int zj; year = g_y; month = g_m; day = g_d; zyr = year; zd = day; zm = month; zy = zyr; if((zy > 1582) || ((zy == 1582) && (zm > 10)) || ((zy == 1582) && (zm == 10) && (zd > 14))) { zjd = ((1461 * (zy + 4800 + ((zm - 14) / 12))) / 4) + ((367 * (zm - 2 - 12 * (((zm - 14) / 12)))) / 12) - ((3 * (((zy + 4900 + ((zm - 14) / 12)) / 100))) / 4) + zd - 32075; } else { zjd = 367 * zy - ((7 * (zy + 5001 + ((zm - 9) / 7))) / 4) + ((275 * zm) / 9) + zd + 1729777; } zl = zjd - 1948440 + 10632; zn = ((zl - 1) / 10631); zl = zl - 10631 * zn + 354; zj = (((10985 - zl) / 5316)) * ((int)((50 * zl) / 17719)) + ((zl / 5670)) * ((int)((43 * zl) / 15238)); zl = zl - (((30 - zj) / 15)) * (((17719 * zj) / 50)) - ((zj / 16)) * (((15238 * zj) / 43)) + 29; zm = ((24 * zl) / 709); zd = zl - ((709 * zm) / 24); zy = 30 * zn + zj - 30; *h_y = zy; *h_m = zm; *h_d = zd; } Edited June 7, 2018 by nacerbaaziz
jchd Posted June 7, 2018 Posted June 7, 2018 There are many variants of islamic calendar. You should read up the net to choose one "standard" and try to implement it in AutoIt as I don't know of an existing published UDF. For instance the .NET frame work, Java 8 and Visual Basic have made API available for this purpose. This wonderful site allows debugging and testing regular expressions (many flavors available). An absolute must have in your bookmarks.Another excellent RegExp tutorial. Don't forget downloading your copy of up-to-date pcretest.exe and pcregrep.exe hereRegExp tutorial: enough to get startedPCRE v8.33 regexp documentation latest available release and currently implemented in AutoIt beta. SQLitespeed is another feature-rich premier SQLite manager (includes import/export). Well worth a try.SQLite Expert (freeware Personal Edition or payware Pro version) is a very useful SQLite database manager.An excellent eBook covering almost every aspect of SQLite3: a must-read for anyone doing serious work.SQL tutorial (covers "generic" SQL, but most of it applies to SQLite as well)A work-in-progress SQLite3 tutorial. Don't miss other LxyzTHW pages!SQLite official website with full documentation (may be newer than the SQLite library that comes standard with AutoIt)
Moderators JLogan3o13 Posted June 7, 2018 Moderators Posted June 7, 2018 5 minutes ago, nacerbaaziz said: this is a function to converte the date to hijri date using cpp + Great, that code is very translatable to AutoIt, try to do so and share your results if you get stuck. "Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball How to get your question answered on this forum!
nacerbaaziz Posted June 7, 2018 Author Posted June 7, 2018 Sorry but I do not understand CPP language
Moderators JLogan3o13 Posted June 7, 2018 Moderators Posted June 7, 2018 Then I guess you have some reading to do. As Melba stated above, we are getting tired of you putting forth zero effort and demanding people write code for you, and do it now. You should be able to step through that code line by line and find an AutoIt equivalent. If you're unwilling to even try to do so, let us know so we can close the topic. "Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball How to get your question answered on this forum!
nacerbaaziz Posted June 7, 2018 Author Posted June 7, 2018 First I apologize to all administrators and members I'm asking here because this forum is very compatible with screen readers Unlike Lots other sites, most of which use a forums script that is not compatible enough with the screen reader And their explanations are mostly pictures Unfortunately, the screen reader can not read the image So for that the search methods I can search on the Internet are very limited I hope you're not bothered by my primitive questions. and please try to help me. I wish you a happy and good life now I'm going back to the subject of my question, If you don't mind. I have declared the variables in a function using autoit But unfortunately no matter how hard I tried I could not understand the if conditional used Can you help me to converte only the conditional if section? That's code what I was able to write.
nacerbaaziz Posted June 7, 2018 Author Posted June 7, 2018 func gregorian_to_hijri($g_y = @Year, $g_m = @Mon, $g_d = @mDay, $h_y = "", $h_m = "", $h_d = "") local $year, $month, $day local $zyr, $zd, $zm, $zy $zjd, $zl, $zn, $zj $year = $g_y $month = $g_m $day = $g_d endFunc
Simpel Posted June 7, 2018 Posted June 7, 2018 2 hours ago, nacerbaaziz said: if((zy > 1582) || ((zy == 1582) && (zm > 10)) || ((zy == 1582) && (zm == 10) && (zd > 14))) { zjd = ((1461 * (zy + 4800 + ((zm - 14) / 12))) / 4) + ((367 * (zm - 2 - 12 * (((zm - 14) / 12)))) / 12) - ((3 * (((zy + 4900 + ((zm - 14) / 12)) / 100))) / 4) + zd - 32075; } else { zjd = 367 * zy - ((7 * (zy + 5001 + ((zm - 9) / 7))) / 4) + ((275 * zm) / 9) + zd + 1729777; } I think this could be translated as: if ((zy > 1582) Or ((zy = 1582) And (zm > 10)) Or ((zy = 1582) And (zm = 10) And (zd > 14))) Then zjd = ((1461 * (zy + 4800 + ((zm - 14) / 12))) / 4) + ((367 * (zm - 2 - 12 * (((zm - 14) / 12)))) / 12) - ((3 * (((zy + 4900 + ((zm - 14) / 12)) / 100))) / 4) + zd - 32075; else zjd = 367 * zy - ((7 * (zy + 5001 + ((zm - 9) / 7))) / 4) + ((275 * zm) / 9) + zd + 1729777; endif This is untested but may give you a hint how to translate that part. Regards, Conrad SciTE4AutoIt = 3.7.3.0 AutoIt = 3.3.14.2 AutoItX64 = 0 OS = Win_10 Build = 19044 OSArch = X64 Language = 0407/german H:\...\AutoIt3\SciTE H:\...\AutoIt3 H:\...\AutoIt3\Include (H:\ = Network Drive) Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind.
nacerbaaziz Posted June 7, 2018 Author Posted June 7, 2018 this is what's i tried but it give me a errors. func gregorian_to_hijri($G_year = @Year, $g_month = @Mon, $g_day = @MDay) local $year = $G_year, $month = $G_month, $day = $g_day local $zjd, $zl, $zn, $zj local $zY, $ZM, $ZD if (($year > 1582) Or (($year = 1582) And ($month > 10)) Or (($year = 1582) And ($month = 10) And ($day > 14))) Then $zjd = ((1461 * ($year + 4800 + (($month - 14) / 12))) / 4) + ((367 * ($month - 2 - 12 * ((($month - 14) / 12)))) / 12) - ((3 * ((($year + 4900 + (($month - 14) / 12))/ 100))) / 4) + $day - 32075 else $zjd = 367 * $year - ((7 * ($year + 5001 + (($month - 9) / 7))) / 4) + ((275 * $month) / 9) + $day + 1729777 endif $zl = $zjd - 1948440 + 10632 $zn = (($zl - 1) / 10631) $zl = $zl - 10631 * $zn + 354 $zj = (((10985 - $zl) / 5316)) * ((Int((50 * $zl) / 17719)) + (($zl / 5670)) * ((int((43 * $zl) / 15238)) $zl = $zl - (((30 - $zj) / 15)) * (((17719 * $zj) / 50)) - (($zj / 16)) * (((15238 * $zj) / 43)) + 29 $zm = ((24 * $zl) / 709) $zd = $zl - ((709 * $zm) / 24) $zy = 30 * $zn + $zj - 30 return $zy & " / " & $zm & " / " & $zd endFunc can any one from you check it please? thank you
Simpel Posted June 8, 2018 Posted June 8, 2018 What error message(s) do you get? Most of them I find very use- and helpful. SciTE4AutoIt = 3.7.3.0 AutoIt = 3.3.14.2 AutoItX64 = 0 OS = Win_10 Build = 19044 OSArch = X64 Language = 0407/german H:\...\AutoIt3\SciTE H:\...\AutoIt3 H:\...\AutoIt3\Include (H:\ = Network Drive) Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind.
Juvigy Posted June 8, 2018 Posted June 8, 2018 I fixed the errors. I dont know if the function result is correct though: ConsoleWrite(gregorian_to_hijri()&@CRLF) Exit func gregorian_to_hijri($G_year = @Year, $g_month = @Mon, $g_day = @MDay) local $year = $G_year, $month = $G_month, $day = $g_day local $zjd, $zl, $zn, $zj local $zY, $ZM, $ZD if (($year > 1582) Or (($year = 1582) And ($month > 10)) Or (($year = 1582) And ($month = 10) And ($day > 14))) Then $zjd = ((1461 * ($year + 4800 + (($month - 14) / 12))) / 4) + ((367 * ($month - 2 - 12 * ((($month - 14) / 12)))) / 12) - ((3 * ((($year + 4900 + (($month - 14) / 12))/ 100))) / 4) + $day - 32075 else $zjd = 367 * $year - ((7 * ($year + 5001 + (($month - 9) / 7))) / 4) + ((275 * $month) / 9) + $day + 1729777 endif $zl = $zjd - 1948440 + 10632 $zn = (($zl - 1) / 10631) $zl = $zl - 10631 * $zn + 354 $zj = (((10985 - $zl) / 5316)) * (Int((50 * $zl) / 17719)) + ($zl / 5670) * (int((43 * $zl) / 15238)) $zl = $zl - (((30 - $zj) / 15)) * (((17719 * $zj) / 50)) - (($zj / 16)) * (((15238 * $zj) / 43)) + 29 $zm = ((24 * $zl) / 709) $zd = $zl - ((709 * $zm) / 24) $zy = 30 * $zn + $zj - 30 return $zy & " / " & $zm & " / " & $zd endFunc Exit
Moderators Melba23 Posted June 8, 2018 Moderators Posted June 8, 2018 (edited) nacerbaaziz, Here is my version of that algorithm: expandcollapse popup#cs void gregorian_to_hijri(int* h_y, int* h_m, int* h_d, int g_y, int g_m, int g_d) { int year, month, day; int zyr; int zd; int zm; int zy; float zjd; int zl; int zn; int zj; year = g_y; month = g_m; day = g_d; zyr = year; zd = day; zm = month; zy = zyr; #ce ConsoleWrite(_Greg2Hij() & @CRLF) Func _Greg2Hij($sGY = @YEAR, $sGM = @MON, $sGD = @MDAY) $iZYr = Number($sGY) $iZY = Number($sGY) $iZM = Number($sGM) $iZD = Number($sGD) #cs if((zy > 1582) || ((zy == 1582) && (zm > 10)) || ((zy == 1582) && (zm == 10) && (zd > 14))) { zjd = ((1461 * (zy + 4800 + ((zm - 14) / 12))) / 4) + ((367 * (zm - 2 - 12 * (((zm - 14) / 12)))) / 12) - ((3 * (((zy + 4900 + ((zm - 14) / 12)) / 100))) / 4) + zd - 32075; } else { zjd = 367 * zy - ((7 * (zy + 5001 + ((zm - 9) / 7))) / 4) + ((275 * zm) / 9) + zd + 1729777; } #ce Local $iZJd If ($iZY > 1582) Or ($iZY = 1582 And $iZM > 10) Or ($iZY = 1582 And $iZM = 10 And $iZD > 14) Then $iZJd = Int(((1461 * ($iZY + 4800 + (($iZM - 14) / 12))) / 4) + _ ((367 * ($iZM - 2 - 12 * ((($iZM - 14) / 12)))) / 12) - _ ((3 * ((($iZY + 4900 + (($iZM - 14) / 12)) / 100))) / 4) + $iZD - 32075) Else $iZJd = Int((367 * $iZY) - ((7 * ($iZY + 5001 + (($iZM - 9) / 7))) / 4) + _ ((275 * $iZM) / 9) + $iZD + 1729777) EndIf #cs zl = zjd - 1948440 + 10632; zn = ((zl - 1) / 10631); zl = zl - 10631 * zn + 354; zj = (((10985 - zl) / 5316)) * ((int)((50 * zl) / 17719)) + ((zl / 5670)) * ((int)((43 * zl) / 15238)); zl = zl - (((30 - zj) / 15)) * (((17719 * zj) / 50)) - ((zj / 16)) * (((15238 * zj) / 43)) + 29; zm = ((24 * zl) / 709); zd = zl - ((709 * zm) / 24); zy = 30 * zn + zj - 30; *h_y = zy; *h_m = zm; *h_d = zd; } #ce Local $iZL = Int($iZJd - 1948440 + 10632) Local $iZN = Int(($iZL - 1) / 10631) $iZL -= (10631 * $iZN) + 354 Local $iZJ = Int((((10985 - $iZL) / 5316)) * (Int((50 * $iZL) / 17719)) + (($iZL / 5670)) * (Int((43 * $iZL) / 15238))) $iZL -= Int((((30 - $iZJ) / 15)) * (((17719 * $iZJ) / 50)) - (($iZJ / 16)) * (((15238 * $iZJ) / 43)) + 29) Local $iZM =Int((24 * $iZL) / 709) Local $iZD = Int($iZL - ((709 * $iZM) / 24)) Local $iZY = Int((30 * $iZN) + $iZJ - 30) Return $iZY & "/" & $iZM & "/" & $iZD EndFunc ;==>_Greg2Hij It gives the same nonsense result as Juvigy's: 1440.79552344311 / -36.2656331431983 / 0 I think this is caused by a problem with operator precedence in those calculations. Most languages work on roughly the same pattern but in multiple operator chains like this algorithm it is easy to get the parentheses wrong. Corrected (I think) for the Int typing - now gives: 1462/3273/26 Which is still wrong, but closer to what online convertors give as 1439/09/25 M23 Edited June 8, 2018 by Melba23 Amended variable typing Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
water Posted June 8, 2018 Posted June 8, 2018 In VB it is quite easy as the following code snippet shows: Sub test() Dim a, b As String a = "2017/7/7" b = "2017/5/1" Debug.Print DGreg("1438/12/10") Debug.Print DHijri(b) Debug.Print DateDiff("d", a, b) End Sub Function DGreg(dtHijDate As String) As Date VBA.Calendar = vbCalHijri DGreg = dtHijDate VBA.Calendar = vbCalGreg End Function Function DHijri(dtGregDate As String) As Date VBA.Calendar = vbCalGreg DHijri = dtGregDate VBA.Calendar = vbCalGreg End Function https://social.msdn.microsoft.com/Forums/en-US/9d36abaa-8a10-401f-bf38-fe105372049d/vba-code-for-hijri-date-converter?forum=isvvba My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
jchd Posted June 8, 2018 Posted June 8, 2018 The seemingly wrong result is caused by AutoIt variables not being strongly typed. To work as expected one need to insert Int() everytime an operation yields a partial result as double, while in C when a variable is declared int and assigned a double result, casting to int is automagic. Xandy 1 This wonderful site allows debugging and testing regular expressions (many flavors available). An absolute must have in your bookmarks.Another excellent RegExp tutorial. Don't forget downloading your copy of up-to-date pcretest.exe and pcregrep.exe hereRegExp tutorial: enough to get startedPCRE v8.33 regexp documentation latest available release and currently implemented in AutoIt beta. SQLitespeed is another feature-rich premier SQLite manager (includes import/export). Well worth a try.SQLite Expert (freeware Personal Edition or payware Pro version) is a very useful SQLite database manager.An excellent eBook covering almost every aspect of SQLite3: a must-read for anyone doing serious work.SQL tutorial (covers "generic" SQL, but most of it applies to SQLite as well)A work-in-progress SQLite3 tutorial. Don't miss other LxyzTHW pages!SQLite official website with full documentation (may be newer than the SQLite library that comes standard with AutoIt)
Moderators Melba23 Posted June 8, 2018 Moderators Posted June 8, 2018 jchd, Thanks for that tip. I adjusted the algorithm I posted above - but obviously not correctly as it still gives a nonsense answer for the month. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
nacerbaaziz Posted June 8, 2018 Author Posted June 8, 2018 Welcome, everyone. First I would like to thank you for the interaction I tried using the function that Melba23 did it. it give me this result 1462/3273/26 But the correct date is 1439 / 09 / 23 And I didn't know why it give me a false result Can any one of you help me to correct it? Or if someone of you knows the VB language trying to convert the function that mister Water shared with us Thank you already. And I apologize to you for my stupidity.
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