File Modified Date and Time: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
m (Added category links.)
m (Corrected link to System plug-in.)
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
{|align=right
{{PageAuthor|deguix}}
|<small>Author: [[{{ns:2}}:deguix|deguix]] ([[{{ns:3}}:deguix|talk]], [[{{ns:-1}}:Contributions/deguix|contrib]])</small>
 
|}
<br style="clear:both;">
== Description ==
== Description ==


<b>Superseded by:</b> [[GetTime]] function.<br>
<b>Superseded by:</b> [[GetTime|GetTime function]].<br>
<b>Required:</b> [[System]] Plugin.
<b>Required:</b> [[System plug-in]].


This function returns a file or folder modified date and time.
This function returns a file or folder modified date and time.
Line 168: Line 166:
</highlight-nsis>
</highlight-nsis>


[[{{ns:14}}:Date & Time Functions]]
[[Category:Date & Time Functions]]

Latest revision as of 06:05, 3 December 2005

Author: deguix (talk, contrib)


Description

Superseded by: GetTime function.
Required: System plug-in.

This function returns a file or folder modified date and time.

Function call:

Push "[path/]file.ext" ;File or folder
Call FileModifiedDate
Pop "$var1" ;Variable (for year)
Pop "$var2" ;Variable (for month)
Pop "$var3" ;Variable (for day)
Pop "$var4" ;Variable (for day of week name)
Pop "$var5" ;Variable (for hour)
Pop "$var6" ;Variable (for minute)
Pop "$var7" ;Variable (for seconds)

The function:

;----------------------------------------------------------------------------
; Superseded by     : GetTime function.
;----------------------------------------------------------------------------
; Title             : File modified date and time
; Short Name        : FileModifiedDate
; Last Changed      : 21/Feb/2005
; Code Type         : Function
; Code Sub-Type     : Normal
;----------------------------------------------------------------------------
; Required          : System plugin.
; Description       : Returns a file or folder modified date and time.
;----------------------------------------------------------------------------
; Function Call     : Push "[path/]file.ext"
;                       File or folder to get modified date and time.
;
;                     Call FileModifiedDate
;
;                     Pop "$Variable1"
;                       Year.
;
;                     Pop "$Variable2"
;                       Month.
;
;                     Pop "$Variable3"
;                       Day.
;
;                     Pop "$Variable4"
;                       Day of the week name.
;
;                     Pop "$Variable5"
;                       Hour.
;
;                     Pop "$Variable6"
;                       Minute.
;
;                     Pop "$Variable7"
;                       Second.
;----------------------------------------------------------------------------
; Author            : Diego Pedroso
; Author Reg. Name  : deguix
;----------------------------------------------------------------------------
 
Function FileModifiedDate
 
  # Prepare variables
  Exch $0
  Push $1
  Push $2
  Push $3
  Push $4
  Push $5
  Push $6
  Push $7
  Push $R0
 
  # Original System Example (with no dependencies)
 
  ; create WIN32_FIND_DATA struct
  System::Call '*(i, l, l, l, i, i, i, i, &t260, &t14) i .r2'
 
  ; Find file info
  System::Call 'kernel32::FindFirstFileA(t, i) i(r0, r2) .r3'
 
  ; ok?
  IntCmp $3 -1 sgfst_exit
 
    ; close file search
    System::Call 'kernel32::FindClose(i) i(r3)'
 
    ; Create systemtime struct for local time
    System::Call '*(&i2, &i2, &i2, &i2, &i2, &i2, &i2, &i2) i .R0'
 
    ; Get File time
    System::Call '*$2(i, l, l, l, i, i, i, i, &t260, &t14) i (,,, .r3)'
 
    ; Convert file time (UTC) to local file time
    System::Call 'kernel32::FileTimeToLocalFileTime(*l, *l) i(r3, .r1)'
 
    ; Convert file time to system time
    System::Call 'kernel32::FileTimeToSystemTime(*l, i) i(r1, R0)'
 
    sgfst_exit:
 
  System::Call '*$R0(&i2, &i2, &i2, &i2, &i2, &i2, &i2, &i2)i \
  (.r4, .r5, .r3, .r6, .r2, .r1, .r0,)'
 
  # Day of week: convert to name
  StrCmp $3 0 0 +3
    StrCpy $3 Sunday
      Goto WeekNameEnd
  StrCmp $3 1 0 +3
    StrCpy $3 Monday
      Goto WeekNameEnd
  StrCmp $3 2 0 +3
    StrCpy $3 Tuesday
      Goto WeekNameEnd
  StrCmp $3 3 0 +3
    StrCpy $3 Wednesday
      Goto WeekNameEnd
  StrCmp $3 4 0 +3
    StrCpy $3 Thursday
      Goto WeekNameEnd
  StrCmp $3 5 0 +3
    StrCpy $3 Friday
      Goto WeekNameEnd
  StrCmp $3 6 0 +2
    StrCpy $3 Saturday
  WeekNameEnd:
 
  # Minute: convert to 2 digits format
	IntCmp $1 9 0 0 +2
	  StrCpy $1 '0$1'
 
  # Second: convert to 2 digits format
	IntCmp $0 9 0 0 +2
	  StrCpy $0 '0$0'
 
  # Return to user
  Pop $R0
  Exch $6
  Exch
  Exch $5
  Exch
  Exch 2
  Exch $4
  Exch 2
  Exch 3
  Exch $3
  Exch 3
  Exch 4
  Exch $2
  Exch 4
  Exch 5
  Exch $1
  Exch 5
  Exch 6
  Exch $0
  Exch 6
 
FunctionEnd