Snippets ( Time & Date )

From AutoIt Wiki
Revision as of 15:17, 12 November 2012 by IEvKI3gv9Wrkd41u (talk | contribs) (+Snippets Category (+ normalize top))
Jump to navigation Jump to search

Please always credit an author in your script if you use their code. It is only polite.


30 Day Trial ~ Author - MSLx Fanboy

; 30 Day Trial

#include<date.au3>
#include<string.au3>

If RegRead("HKCU\Software\Microsoft\Windows\Current Version", "XPClean Menu") = "" Then
    RegWrite("HKCU\Software\Microsoft\Windows\Current Version", "XPClean Menu", "REG_SZ", _StringEncrypt(1, _NowCalc(), @ComputerName))
    SetError(0)
EndIf
$startdate = _StringEncrypt(0, RegRead("HKCU\Software\Microsoft\Windows\Current Version", "XPClean Menu"), @ComputerName)

If _DateDiff("D", $startdate, _NowCalc()) > 30 Then
    MsgBox(0, "*XPClean Menu*", "You're registration period has expired.")
    Exit
EndIf

_ChangeTime() ~ Author - guinness

_ChangeTime(@HOUR, @MIN)

Func _ChangeTime($iHour, $iMin)
    Local $sTime = $iHour & RegRead("HKEY_CURRENT_USER\Control Panel\International", "sTime") & $iMin
    RunWait(@ComSpec & " /c Time " & $sTime, "", @SW_HIDE)
    Return $sTime
EndFunc   ;==>_ChangeTime

_ChangeDate() ~ Author - guinness

#include <Date.au3>

_ChangeDate(@YEAR, @MON , @MDAY)

Func _ChangeDate($iYear, $iMon, $iDay)
    Local $sDate = _DateTimeFormat($iDay & "/" & $iMon & "/" & $iYear, 2)
    RunWait(@ComSpec & " /c Date " & $sDate, "", @SW_HIDE)
    Return $sDate
EndFunc   ;==>_ChangeDate

Check File Date To Current Date ~ Author - Jdeb

; Check File Date To Current Date

#include<date.au3>
$n_tFile = "your file name"
$n_Fdate = FileGetTime($n_tFile,1)
$sdate=$n_Fdate[0]  & "/" & $n_Fdate[1] & "/" & $n_Fdate[2] & " "  &  $n_Fdate[3] & ":" & $n_Fdate[4] & ":" &  $n_Fdate[5]
$edate=_NowCalc()
If _DateDiff ('d',$sdate,$eDate) > 5 then
;
EndIf

_CheckIdle() ~ Author - GaryFrost

; User/System Idle Time

#include <Date.au3>
HotKeySet("{Esc}", "_Terminate")

Local $last_active = 0, $iHours, $iMins, $iSecs
Local $not_idle = _CheckIdle($last_active, 1)
while (1)
    Sleep(200)
    $not_idle = _CheckIdle($last_active)
    _TicksToTime($not_idle, $iHours, $iMins, $iSecs)
    If $iHours Or $iMins Or $iSecs Then
        ConsoleWrite("Was Idle for: Hours: " & $iHours & " Minutes: " & $iMins & " Seconds: " & $iSecs & @LF)
    EndIf
WEnd

Func _CheckIdle(ByRef $last_active, $start = 0)
    Local $struct = DllStructCreate("uint;dword");
    DllStructSetData($struct, 1, DllStructGetSize($struct));
    If $start Then
        DllCall("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr($struct))
        $last_active = DllStructGetData($struct, 2)
        Return $last_active
    Else
        DllCall("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr($struct))
        If $last_active <> DllStructGetData($struct, 2) Then
            Local $save = $last_active
            $last_active = DllStructGetData($struct, 2)
            Return $last_active - $save
        EndIf
    EndIf
EndFunc ;==>_CheckIdle()

Func _Terminate()
    Exit
EndFunc ;==>_Terminate

_CopyrightYear() ~ Author - guinness

ConsoleWrite(Chr(169) & " " & _CopyrightYear("2010") & @LF) ; Pass a String of 2010. This is the year the software was created.
ConsoleWrite(_CopyrightYear(2010) & @LF) ; Pass a Number of 2010.
ConsoleWrite(_CopyrightYear(2012) & @LF) ; Pass a Number of 2012.

Func _CopyrightYear($iStartYear, $sDelimeter = "-") ; Return a String representation.
    If Number($iStartYear) <> @YEAR Then
        Return String($iStartYear & " " & $sDelimeter & " " & @YEAR)
    EndIf
    Return String($iStartYear)
EndFunc   ;==>_CopyrightYear

_GetQuarterlyValue() ~ Author - guinness

ConsoleWrite('The current quartely value is: ' & _GetQuarterlyValue() & @CRLF)

; Get the current quarter of the year (1–4).
Func _GetQuarterlyValue()
    Local $oWMIService = ObjGet('winmgmts:\\.\root\CIMV2'), $sReturn = ''
    Local $oColItems = $oWMIService.ExecQuery('Select Quarter From Win32_UTCTime', 'WQL')
    If IsObj($oColItems) Then
        For $oItem In $oColItems
            Return $oItem.Quarter
        Next
    EndIf
EndFunc   ;==>_GetQuarterlyValue

Return To Contents

Run a timed program daily ~ Author - Valuater

; Run a timed program daily

; #NoTrayIcon ; for testing

Global $Minutes = 30
Global $Title = "My Window Title"

; settings
Global $Show_Clock = 1 ; 0 = no show
Global $Clock_Title = $Minutes & "  Minute Time Machine"

If WinExists($Clock_Title) Then Exit
AutoItWinSetTitle($Clock_Title)

; ***** for testing only ******
HotKeySet("{F9}", "Runner")
Func Runner()
	Run("notepad.exe")
EndFunc   ;==>Runner
$Minutes = 3 ; for testing
$Title = "Untitled" ; for testing
; *****************************

While 1
	If WinExists($Title) Then Clockit()
	Sleep(100)
WEnd

Func Clockit()
	Local $log = @WindowsDir & "\temp\"
	Local $log_file = $log & @YDAY & ".pak"
	If Not FileExists($log_file) Then
		FileDelete($log & "*.pak")
		FileWriteLine($log_file, $Minutes)
	EndIf
	Local $M_Minutes = FileReadLine($log_file, 1)
	Local $begin = TimerInit(), $60Count = 0
	If $M_Minutes <= 0 Then
		WinClose($Title)
		MsgBox(64, $Clock_Title, "Time-Up!! ...Your daily time usage has passed.    ", 5)
		Return
	EndIf
	While $M_Minutes > 0 And WinExists($Title)
		$dif = TimerDiff($begin)
		$Count = Int($dif / 1000)
		If $Count >= 60 Then
			$60Count += 1
			$M_Minutes -= 1
			$begin = TimerInit()
		EndIf
		If $Show_Clock Then ToolTip("Minutes Remaining = " & $M_Minutes & @CRLF & "Minutes Past = " & $60Count & @CRLF & "Seconds Count = " & $Count, 20, 20, $Clock_Title, 1)
		Sleep(100)
	WEnd
	ToolTip("")
	FileDelete($log_file)
	Sleep(300)
	If $Count >= 20 And $M_Minutes > 0 Then $M_Minutes -= 1
	FileWriteLine($log_file, $M_Minutes)
EndFunc   ;==>Clockit

_Time() ~ Author - GEOSoft

ConsoleWrite("The Time Is " & _Time() & @CRLF)

Func _Time($iSec = 0, $tFormat = 12)
	Local $fKey = "HKCU\Control Panel\International", $ap = RegRead($fKey, "s1159")
	Local $pStr = RegRead($fKey, "s2359"), $tSep = RegRead($fKey, "sTime"), $sStr = ""
	Local $hour = @HOUR
	If $tFormat = 12 Then
		If $hour = 0 Then $hour = 12
		If @HOUR >= 12 Then
			$hour = @HOUR
			If $hour > 12 Then $hour -= 12
			$ap = $pStr
		EndIf
	Else
		$ap = ""
		$hour = StringFormat("%02u", $hour)
	EndIf
	If $iSec <> 0 Then $sStr = $tSep & @SEC
	If $ap <> "" Then $ap = Chr(32) & $ap
	Return $hour & $tSep & @MIN & $sStr & $ap
EndFunc   ;==>_Time

_Time() ~ Author - SmOke_N

ConsoleWrite(_Time() & @CRLF)

Func _Time()
	Local $AMPM, $hour
    If @HOUR > 12 Then
        $hour = @HOUR - 12
        $AMPM = "PM"
    ElseIf @HOUR = 0 Then
        $hour = 12
        $AMPM = "AM"
    Else
        $hour = @HOUR
        $AMPM = "AM"
    EndIf
    Return $hour & ":" & @MIN & $AMPM
EndFunc ;==>_Time

_Time() ~ Author - Valuater

MsgBox(0, "What is the time?", _Time())

Func _Time()
    Local $hour = @HOUR, $AMPM = "AM"
    If $hour > 11 Then $AMPM = "PM"
    If $hour = 0 Then $hour = 12
    If $hour > 12 Then $hour -= 12
    Return $hour & ":" & @MIN & " " & $AMPM
EndFunc ;==>_Time

Timer To "Thousandths" Of A Second ~ Author - Holger

; Timer To "Thousandths" Of A Second

While 1
    ToolTip(@Hour & ':' & @Min & ':' & @Sec & ':' & _MSec())
    Sleep(1)
WEnd

Exit

Func _MSec()
    Local $stSystemTime = DllStructCreate('ushort;ushort;ushort;ushort;ushort;ushort;ushort;ushort')
    DllCall('kernel32.dll', 'none', 'GetSystemTime', 'ptr', DllStructGetPtr($stSystemTime))
    Local $sMilliSeconds = StringFormat('%03d', DllStructGetData($stSystemTime, 8))
    $stSystemTime = 0
    Return $sMilliSeconds
EndFunc

_TimeFormatLocal() ~ Author - GEOSoft

; Return a time string using the local settings format.
MsgBox(4096, "", _TimeFormatLocal(@HOUR & @MIN & @SEC))
MsgBox(4096, "", _TimeFormatLocal(@HOUR & "h" & @MIN & ":" & @SEC))

Func _TimeFormatLocal($sTime);; Use Local time format settings
    Local $sFormat = RegRead("HKCU\Control Panel\International", "sTimeFormat")
    If @error Then
        $sFormat = "h:mm:ss tt"
    EndIf
    Local $aFormat = StringRegExp($sFormat, "\w*(.)\w*(.).*", 3)
    If @error Then
        SetError(1, 0, 0)
    EndIf
    Return StringRegExpReplace($sTime, "(\d{2}).?(\d{2}).?(\d{2})", "\1" & $aFormat[0] & "\2" & $aFormat[1] & "\3")
EndFunc   ;==>_TimeFormatLocal

Time Machine #1 ~ Author - Valuater

;Time Machine #1
;Minutes/seconds/miliseconds

$Minutes = 90 ; will wait 90 minutes

Local $60Count = 0, $begin = TimerInit()
While $Minutes > $60Count
    $dif = TimerDiff($begin)
    $dif2 = StringLeft($dif, StringInStr($dif, ".") -1)
    $Count = int($dif/1000)
    $60Count = Int($Count / 60)
    ToolTip("Minutes Required = " & $Minutes & @CRLF & "Minutes Past = " & $60Count & @CRLF & "Seconds Count = " & $Count & @CRLF & "Mili-Seconds Count = " & $dif2, 20, 20, "Time Machine #1", 1)
    Sleep(20)
WEnd

MsgBox(64, "Time-Up!!", "Your " & $Minutes & " minutes have passed    ")


Time Machine #2 ~ Author - Valuater

; Time Machine #2
; Hours  & Minutes

$start = @HOUR & ":" & @MIN + 2 ; for testing

While 1
    $start2 = @HOUR & ":" & @MIN
    If $start = $start2 Then
        Run("notepad.exe")
        ExitLoop
    EndIf
    ToolTip("Start Time = " & $start & @CRLF & "Real Time = " & $start2, 20, 20, "Time Machine", 1)
    Sleep(2000)
WEnd
Exit

Time Machine #3 ~ Author - Valuater

; Time Machine #3
; Day & Hour

$start = @MDAY & "/" & @HOUR + 1 ; for testing

While 1
    $start2 = @MDAY & "/" & @HOUR
    If $start = $start2 Then
        Run("notepad.exe")
        Exit
    EndIf
    ToolTip("Start Time = " & $start & @CRLF & "Real Time = " & $start2, 120, 120, "Time Machine", 1)
    Sleep(2000)
WEnd
Exit

_GetTodaysDate() ~ Author - guinness

ConsoleWrite(_GetTodaysDate() & @CRLF) ; Return the date and the time.
ConsoleWrite(_GetTodaysDate(0) & @CRLF) ; Return the date only.

Func _GetTodaysDate($iReturnTime = 1)
    Local $aMDay[8] = [7, "Sun", "Mon", "Tue", "Wed", "Thur", "Fri", "Sat"], _
            $aMonth[13] = [12, "Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec"], $aTime[2] = ["", ' ' & @HOUR & ':' & @MIN & ':' & '00']
    Return $aMDay[@WDAY] & ', ' & @MDAY & ' ' & $aMonth[@MON] & ' ' & @YEAR & $aTime[$iReturnTime]
EndFunc   ;==>_GetTodaysDate