KaFu Posted July 1, 2009 Share Posted July 1, 2009 Was searching the forum and the help-files in vain... until I stumbled across the expression "since EPOCH" in the _DateDiff() example ... vice versa conversion shouldn't be a problem.#include <Date.au3> ; Ref http://de.wikipedia.org/wiki/Unixzeit#Besondere_Werte ; Now $iDateCalc = _DateDiff( 's',"1970/01/01 00:00:00",_NowCalc()) MsgBox( 4096, "", "Number of seconds since EPOCH: " & $iDateCalc ) ; Ref from Wikipedia #1 => 1000000000 $iDateCalc = _DateDiff( 's',"1970/01/01 00:00:00","2001/09/09 01:46:40") MsgBox( 4096, "", "Number of seconds since EPOCH: " & $iDateCalc ) ; Ref from Wikipedia #2 => 1234567890 $iDateCalc = _DateDiff( 's',"1970/01/01 00:00:00","2009/02/13 23:31:30") MsgBox( 4096, "", "Number of seconds since EPOCH: " & $iDateCalc ) ; Ref from Wikipedia #3 => 2000000000 $iDateCalc = _DateDiff( 's',"1970/01/01 00:00:00","2033/05/18 03:33:20") MsgBox( 4096, "", "Number of seconds since EPOCH: " & $iDateCalc )Best Regards OS: Win10-22H2 - 64bit - German, AutoIt Version: 3.3.16.1, AutoIt Editor: SciTE, Website: https://funk.eu AMT - Auto-Movie-Thumbnailer (2024-Oct-13) BIC - Batch-Image-Cropper (2023-Apr-01) COP - Color Picker (2009-May-21) DCS - Dynamic Cursor Selector (2024-Oct-13) HMW - Hide my Windows (2024-Oct-19) HRC - HotKey Resolution Changer (2012-May-16) ICU - Icon Configuration Utility (2018-Sep-16) SMF - Search my Files (2024-Oct-20) - THE file info and duplicates search tool SSD - Set Sound Device (2017-Sep-16) Link to comment Share on other sites More sharing options...
Mat Posted July 1, 2009 Share Posted July 1, 2009 Simple 1 line to get current timestamp. Appareo Decet Nihil Munditia?MsgBox (0, "Current date:", ((@YEAR - 1970) * 31557600) + (int ((@YEAR - 1972) / 4) * 86400) + ((@YDAY - 1) * 86400) + (@HOUR * 3600) + (@MIN * 60) + @SEC) Reverse method, not using any includes, but some ideas taken from date.au3, such as how to get the leapyear.MsgBox (0, "1234567890", _GetDateFromUnix (1234567890)) Func _GetDateFromUnix ($nPosix) Local $nYear = 1970, $nMon = 1, $nDay = 1, $nHour = 00, $nMin = 00, $nSec = 00, $aNumDays = StringSplit ("31,28,31,30,31,30,31,31,30,31,30,31", ",") While 1 If (Mod ($nYear + 1, 400) = 0) Or (Mod ($nYear + 1, 4) = 0 And Mod ($nYear + 1, 100) <> 0) Then; is leap year If $nPosix < 31536000 + 86400 Then ExitLoop $nPosix -= 31536000 + 86400 $nYear += 1 Else If $nPosix < 31536000 Then ExitLoop $nPosix -= 31536000 $nYear += 1 EndIf WEnd While $nPosix > 86400 $nPosix -= 86400 $nDay += 1 WEnd While $nPosix > 3600 $nPosix -= 3600 $nHour += 1 WEnd While $nPosix > 60 $nPosix -= 60 $nMin += 1 WEnd $nSec = $nPosix For $i = 1 to 12 If $nDay < $aNumDays[$i] Then ExitLoop $nDay -= $aNumDays[$i] $nMon += 1 Next Return $nDay & "/" & $nMon & "/" & $nYear & " " & $nHour & ":" & $nMin & ":" & $nSec EndFunc; ==> _GetDateFromUnix Duco ergo sum MDiesel AutoIt Project Listing Link to comment Share on other sites More sharing options...
KaFu Posted July 2, 2009 Author Share Posted July 2, 2009 (edited) The GetDateFromUnix() func is a nice addition , didn't find and good solutions while searching... But your current timestamp doesn't seem to fit: #include <Date.au3> ; Now $iDateCalc = _DateDiff( 's',"1970/01/01 00:00:00",_NowCalc()) ConsoleWrite("_DateDiff " & @tab & $iDateCalc & @crlf) ConsoleWrite("MDiesel " & @tab & ((@YEAR - 1970) * 31557600) + (int ((@YEAR - 1972) / 4) * 86400) + ((@YDAY - 1) * 86400) + (@HOUR * 3600) + (@MIN * 60) + @SEC & @crlf) Edited July 2, 2009 by KaFu OS: Win10-22H2 - 64bit - German, AutoIt Version: 3.3.16.1, AutoIt Editor: SciTE, Website: https://funk.eu AMT - Auto-Movie-Thumbnailer (2024-Oct-13) BIC - Batch-Image-Cropper (2023-Apr-01) COP - Color Picker (2009-May-21) DCS - Dynamic Cursor Selector (2024-Oct-13) HMW - Hide my Windows (2024-Oct-19) HRC - HotKey Resolution Changer (2012-May-16) ICU - Icon Configuration Utility (2018-Sep-16) SMF - Search my Files (2024-Oct-20) - THE file info and duplicates search tool SSD - Set Sound Device (2017-Sep-16) Link to comment Share on other sites More sharing options...
trancexx Posted July 2, 2009 Share Posted July 2, 2009 This is covered in EPOCH time, converting to and from thread in a more advanced and better way. I'm not saying that because it involves me, but just being objective really.Just test mdiesel's function with EPOCH 123456789012345. It would take like forever.Jos is doing that much better.btw, there is just one little thing with one of my function and I corrected it for the needs of ResourcesViewerAndCompiler.au3. Inside that script the ultimate solution. ♡♡♡ . eMyvnE Link to comment Share on other sites More sharing options...
KaFu Posted July 2, 2009 Author Share Posted July 2, 2009 This is covered in EPOCH time, converting to and from thread in a more advanced and better way.Looks really good, will use it . Just didn't find it because the post is lacking the keyword 'Unix Timestamp' ... OS: Win10-22H2 - 64bit - German, AutoIt Version: 3.3.16.1, AutoIt Editor: SciTE, Website: https://funk.eu AMT - Auto-Movie-Thumbnailer (2024-Oct-13) BIC - Batch-Image-Cropper (2023-Apr-01) COP - Color Picker (2009-May-21) DCS - Dynamic Cursor Selector (2024-Oct-13) HMW - Hide my Windows (2024-Oct-19) HRC - HotKey Resolution Changer (2012-May-16) ICU - Icon Configuration Utility (2018-Sep-16) SMF - Search my Files (2024-Oct-20) - THE file info and duplicates search tool SSD - Set Sound Device (2017-Sep-16) Link to comment Share on other sites More sharing options...
Mat Posted July 2, 2009 Share Posted July 2, 2009 (edited) I thought unix stamps could never reach that point, isn't it a signed 32bit integer? That only gives a range of -2,147,483,648 to 2,147,483,647, At least until we find a different method to store the data... see the 2038 problemBut you are right, mine is a very simple and makeshift method.@KafuFound the reason for the miscalculation on my part. I was using 365.25 as the number of days in a year, and then adding leapyears on top... And then I was exactly 1 day ahead of you, so I just took a day off. #include <Date.au3> ; Now $iDateCalc = _DateDiff( 's',"1970/01/01 00:00:00",_NowCalc()) ConsoleWrite("_DateDiff " & @tab & $iDateCalc & @crlf) ConsoleWrite("MDiesel " & @tab & ((@YEAR - 1970) * 31536000) + (int ((@YEAR - 1972) / 4) * 86400) + ((@YDAY - 2) * 86400) + (@HOUR * 3600) + (@MIN * 60) + @SEC & @crlf)Non plaudite. Modo pecuniam jaciteMDieselEdit: you never saw this! Just seeing what the new forums do to this [quote][__CODE_PROTECTED]JiM5MTthdXRvaXQmIzkzO2ZrZHNoZmtzIGtoaCBmZHNmc2sgJiM2MDsmIzMzOy0tZzEtLSYjNjI7JiM2MDtkaXYgY2xhc3M9JiMzOTtjb2RldG9wJiMzOTsmIzYyO0NPREUmIzU4OyBBdXRvSXQmIzYwOy9kaXYmIzYyOyYjNjA7ZGl2IGNsYXNzPSYjMzk7Z2VzaGltYWluJiMzOTsmIzYyOyYjNjA7JiMzMzstLWVnMS0tJiM2MjsmIzYwO2RpdiBjbGFzcz0mIzA5MjsmIzM0O2F1dG9pdCYjMDkyOyYjMzQ7IHN0eWxlPSYjMDkyOyYjMzQ7Zm9udC1mYW1pbHkmIzU4O21vbm9zcGFjZTsmIzA5MjsmIzM0OyYjNjI7JiM2MDtzcGFuIGNsYXNzPSYjMDkyOyYjMzQ7a3czJiMwOTI7JiMzNDsmIzYyO21zZ2JveCYjNjA7L3NwYW4mIzYyOyYjNjA7L2RpdiYjNjI7JiM2MDsmIzMzOy0tZ2MyLS0mIzYyOyYjNjA7JiMzMzstLWJYTm5ZbTk0LS0mIzYyOyYjNjA7JiMzMzstLWVnYzItLSYjNjI7JiM2MDsmIzMzOy0tZzItLSYjNjI7JiM2MDsvZGl2JiM2MjsmIzYwOyYjMzM7LS1lZzItLSYjNjI7IGZkc2Zkc2toJiM5MTsvYXV0b2l0JiM5Mzs=[/__CODE_PROTECTED][/quote] Edited July 5, 2009 by mdiesel AutoIt Project Listing Link to comment Share on other sites More sharing options...
trancexx Posted July 3, 2009 Share Posted July 3, 2009 I thought unix stamps could never reach that point, isn't it a signed 32bit integer? That only gives a range of -2,147,483,648 to 2,147,483,647, At least until we find a different method to store the data... see the 2038 problem But you are right, mine is a very simple and makeshift method. @Kafu Found the reason for the miscalculation on my part. I was using 365.25 as the number of days in a year, and then adding leapyears on top... And then I was exactly 1 day ahead of you, so I just took a day off. #include <Date.au3> ; Now $iDateCalc = _DateDiff( 's',"1970/01/01 00:00:00",_NowCalc()) ConsoleWrite("_DateDiff " & @tab & $iDateCalc & @crlf) ConsoleWrite("MDiesel " & @tab & ((@YEAR - 1970) * 31536000) + (int ((@YEAR - 1972) / 4) * 86400) + ((@YDAY - 2) * 86400) + (@HOUR * 3600) + (@MIN * 60) + @SEC & @crlf) Non plaudite. Modo pecuniam jacite MDieselFors fortis (ahaa!!! see that) Check again. And why wouldn't EPOCH time be over int? ♡♡♡ . eMyvnE Link to comment Share on other sites More sharing options...
KaFu Posted July 3, 2009 Author Share Posted July 3, 2009 And why wouldn't EPOCH time be over int? OS: Win10-22H2 - 64bit - German, AutoIt Version: 3.3.16.1, AutoIt Editor: SciTE, Website: https://funk.eu AMT - Auto-Movie-Thumbnailer (2024-Oct-13) BIC - Batch-Image-Cropper (2023-Apr-01) COP - Color Picker (2009-May-21) DCS - Dynamic Cursor Selector (2024-Oct-13) HMW - Hide my Windows (2024-Oct-19) HRC - HotKey Resolution Changer (2012-May-16) ICU - Icon Configuration Utility (2018-Sep-16) SMF - Search my Files (2024-Oct-20) - THE file info and duplicates search tool SSD - Set Sound Device (2017-Sep-16) Link to comment Share on other sites More sharing options...
Mat Posted July 3, 2009 Share Posted July 3, 2009 Trancexx, Cedo maiori, It would have to be stored in a different way, and so they are intending to change it by 2038, so yes it could reach that point, but by then we'll be using a new method, and will all own quantum computers (hopefully). My method doesn't do pre 1970 either. Kafu, I knew that was a bad idea, kuckily ours broke before it could do any real damage. MDiesel mLipok 1 AutoIt Project Listing Link to comment Share on other sites More sharing options...
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