NSIS 如何获取当前时间

1、预定义方式

${ DATE}
当脚本开始编译时当前时区的日期。

${ TIME}
当脚本开始编译时当前时区的时间。

${ TIMESTAMP}
当脚本开始编译时脚本的修改时间戳。

注意:以上三个预定义,获取的时间都是常量,不是当前系统时间!!

2、使用 !define 的 /date 参数

!define /date CUR_TIME "%H:%M:%S %d %b, %Y"

Section
	DetailPrint "${CUR_TIME}" ;14:55:58 10 Sep, 2020
SectionEnd

与方法一效果一样,也是定义常量!

3、记一下

以下两种方式都是可以获取当前系统时间的:

(1)调用 Windows API 来获取本机时间:

Section
	System::Call '*(&i2,&i2,&i2,&i2,&i2,&i2,&i2,&i2)i.s'
	System::Call /NOUNLOAD 'kernel32::GetLocalTime(isr0)'
	System::Call '*$0(&i2.r1,&i2.r2,&i2,&i2.r3,&i2.r4,&i2.r5,&i2.r6,&i2.r7)'
	System::Free $0
	IntFmt $1 "%0.4d" $1
	IntFmt $2 "%0.2d" $2
	IntFmt $3 "%0.2d" $3
	IntFmt $4 "%0.2d" $4
	IntFmt $5 "%0.2d" $5
	IntFmt $6 "%0.2d" $6
	IntFmt $7 "%0.3d" $7
	DetailPrint "datetime=$1 $2 $3 $4:$5:$6.$7"
SectionEnd

备注:如果只想要你需要的值,只需要将上述 &i2.r1 等类似的字符串换成 &i2 即可。如果后面有连续值不获取可以省略掉不写。

(2)使用FileFunc.nsh

!include "FileFunc.nsh"
Section
	!insertmacro GetTime
	${GetTime} "" "L" $0 $1 $2 $3 $4 $5 $6
	DetailPrint "currentdatetime=$2 $1 $0 $4:$5:$6"
SectionEnd

你可能感兴趣的:(NSIS,__DATE__,__TIME__,__TIMESTAMP__,GetLocalTime,DetailPrint)