*****************************************************************
***                 Time NSIS plugin v1.2                     ***
*****************************************************************

2005 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)


Features:
- Mathematical operations with times
- Get local time
- Set local time
- Get file/directory creation, last write, last access times
- Set file/directory creation, last write, last access times
- UTC supported

Notes:
- Win95/Win98/WinMe: Time set for directory is not supported


**** Output variables ****
.r0-.r9 == $0-$9
.R0-.R9 == $R0-$R9


**** Mathematical operations with times ****
time::MathTime "[expression]" .r0

"[expression]"  -  Time representation:
                   date(31.12.2006 23:59:59)    -date as it is
                   second(31.12.2006 23:59:59)  -convert date to seconds
                   minute(31.12.2006 23:59:59)  -convert date to minutes
                   hour(31.12.2006 23:59:59)    -convert date to hours
                   day(31.12.2006 23:59:59)     -convert date to days
                   month(31.12.2006 23:59:59)   -convert date to months
                   year(31.12.2006 23:59:59)    -convert date to years

                   Operators:
                   +, -, *, /, %, =

                   Operator = placed at the and of the expression
                   ... =         -save result as it is
                   ... = date    -convert result to the normal date string
                   ... = second  -convert result to the seconds
                   ... = minute  -convert result to the minutes
                   ... = hour    -convert result to the hours
                   ... = day     -convert result to the days
                   ... = month   -convert result to the months
                   ... = year    -convert result to the years


                   Example (calculate day of the week):
                   time::MathTime "day(29.12.2005 0:0:0) + 5 % 7 =" .R0
                   #$R0=4 (Thursday)

                   Example (calculate date after 60 days):
                   time::MathTime "date(29.12.2005 0:0:0) + date(60.0.0 0:0:0) = date" .R0
                   #$R0=27.02.2006 00:00:00

                   Example (calculate how many days between dates):
                   time::MathTime "second(29.12.2005 0:0:0) - second(15.09.1996 0:0:0) = day" .R0
                   #$R0=3392

.r0  - $0=result
       $0=-1 - error

Notes:
- You can operate only with equal date units: date() with date(), second() with second() ...
- You can't operate date with digits: "date(29.12.2005 0:0:0) + 5 ="
- Mathematical operations are consecutive
- Minimal normal date is "1.1.0 0:0:0"


**** Get local time ****
time::GetLocalTime .r0

.r0  - $0=local time


**** Get local time (UTC) ****
time::GetLocalTimeUTC .r0

Parameters same as time::GetLocalTime


**** Set local time ****
time::SetLocalTime "[LocalTime]" .r0

"[LocalTime]"  - (e.g. "31.12.2006 23:59:59")

.r0  - $0=0  - success
       $0=-1 - error


**** Set local time (UTC) ****
time::SetLocalTimeUTC "[LocalTime]" .r0

Parameters same as time::SetLocalTime


**** Get file times ****
time::GetFileTime "[file]" .r0 .r1 .r2

"[file]"  - File or directory

.r0  - $0=creation time
.r1  - $1=last write time
.r2  - $2=last access time


**** Get file times (UTC) ****
time::GetFileTimeUTC "[file]" .r0 .r1 .r2

Parameters same as time::GetFileTime


**** Set file times ****
time::SetFileTime "[file]" "[CreationTime]" "[LastWriteTime]" "[LastAccessTime]" .r0

"[file]"  - File or directory

"[CreationTime]"    - (e.g. "31.12.2006 23:59:59")
                      if empty don't change time
"[LastWriteTime]"   - (e.g. "31.12.2006 23:59:59")
                      if empty don't change time
"[LastAccessTime]"  - (e.g. "31.12.2006 23:59:59")
                      if empty don't change time

.r0  - $0=0  - success
       $0=-1 - error


**** Set file times (UTC) ****
time::SetFileTimeUTC "[file]" "[CreationTime]" "[LastWriteTime]" "[LastAccessTime]" .r0

Parameters same as time::SetFileTime


**** Get times from time string ****
time::TimeString "[Time]" .r0 .r1 .r2 .r3 .r4 .r5

"[Time]"    - (e.g. "31.12.2006 23:59:59")

.r0  - $0=31    day
.r1  - $1=12    month
.r2  - $2=2006  year
.r3  - $3=23    hour
.r4  - $4=59    minute
.r5  - $5=59    second
