오토잇 유닉스타임스템프(autoit unix timestamp)
리눅스 계열에서 많이 사용하는 유닉스 타임스탬프를 오토잇에서 사용하는 방법입니다.
테스트를 먼저 해보고 문제 없는지 확인 후 사용하는것이 좋습니다.
간혹 잘 된다고 알고 있었는데 후에 보면 시간의 차이가 있는 경우가 있기 때문입니다.
#include <Date.au3>
#include <Array.au3>
#include <Constants.au3>
; ----------------------------------------------------------
; 테스트
; ----------------------------------------------------------
Local $iUnixTime1 = _GetUnixTime()
ConsoleWrite( $iUnixTime1 & @CRLF )
Local $sUnixDate1 = _GetDate_fromUnixTime($iUnixTime1)
ConsoleWrite( $sUnixDate1 & @CRLF )
$sUnixDate1 = _GetDate_fromUnixTime($iUnixTime1, False)
Local $iUnixTime2 = _GetUnixTime('2013/01/01 00:00:00')
ConsoleWrite( $iUnixTime2 & @CRLF )
Local $iUnixTime2 = _GetUnixTime('2023-01-01 00:00:00')
ConsoleWrite( $iUnixTime2 & @CRLF )
; Get timestamp for input datetime (or current datetime).
Func _GetUnixTime($sDate = 0);Date Format: 2013/01/01 00:00:00 ~ Year/Mo/Da Hr:Mi:Se
Local $aSysTimeInfo = _Date_Time_GetTimeZoneInformation()
Local $utcTime = ""
If Not $sDate Then $sDate = _NowCalc()
If Int(StringLeft($sDate, 4)) < 1970 Then Return ""
If $aSysTimeInfo[0] = 2 Then ; if daylight saving time is active
$utcTime = _DateAdd('n', $aSysTimeInfo[1] + $aSysTimeInfo[7], $sDate) ; account for time zone and daylight saving time
Else
$utcTime = _DateAdd('n', $aSysTimeInfo[1], $sDate) ; account for time zone
EndIf
Return _DateDiff('s', "1970/01/01 00:00:00", $utcTime)
EndFunc ;==>_GetUnixTime
;$blTrim: Year in short format and no seconds.
Func _GetDate_fromUnixTime($iUnixTime, $iReturnLocal = True)
Local $aRet = 0, $aDate = 0
Local $aMonthNumberAbbrev[13] = ["", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
Local $timeAdj = 0
If Not $iReturnLocal Then
Local $aSysTimeInfo = _Date_Time_GetTimeZoneInformation()
Local $timeAdj = $aSysTimeInfo[1] * 60
If $aSysTimeInfo[0] = 2 Then $timeAdj += $aSysTimeInfo[7] * 60
EndIf
$aRet = DllCall("msvcrt.dll", "str:cdecl", "ctime", "int*", $iUnixTime + $timeAdj )
If @error Or Not $aRet[0] Then Return ""
$aDate = StringSplit(StringTrimRight($aRet[0], 1), " ", 2)
Return $aDate[4] & "/" & StringFormat("%.2d", _ArraySearch($aMonthNumberAbbrev, $aDate[1])) & "/" & $aDate[2] & " " & $aDate[3]
EndFunc ;==>_GetUnixDate
간략하게 사용이 가능한 오토잇 유닉스타임스템프(autoit unix timestamp) 함수 입니다.