转换 YYYYMMDDHH24MISS 时间戳到指定的日期/时间格式.
FormatTime, OutputVar [, YYYYMMDDHH24MISS, Format]
OutputVar | 用于保存结果的变量名称. |
YYYYMMDD... | 此参数留空,则使用当前的本地日期和时间. 否则, 请指定 YYYYMMDDHH24MISS 格式的时间戳中所有或主要的部分. 如果时间戳中日期和/或时间部分是无效的 -- 例如平年的二月29日 -- 在 OutputVar 中日期和/或时间将被忽略. 尽管仅支持 1601 到 9999 年份, 早于1601年的时间戳仍然可以生成格式化的时间, 不过仅有其中的时间部分有效. |
Format | 如果省略, 默认格式为长日期后接着时间, 它们都将根据当前用户区域设置进行格式化. 例如: 4:55 PM Saturday, November 27, 2004 否则, 请指定下面的一个或多个日期-时间格式, 以及任何原义的空格和标点符号 (逗号不需要转义; 它们可以正常使用). 在后面的例子中, 请注意 M 必须为大写: M/d/yyyy h:mm tt |
d | 不含前导零的天数 (1 - 31) |
dd | 含前导零的天数 (01 – 31) |
ddd | 在当前的用户语言里星期几的简称 (例如 Monday) |
dddd | 在当前的用户语言里星期几的全称 (例如 Monday) |
M | 含前导零的月份 (1 – 12) |
MM | 含前导零的月份 (01 – 12) |
MMM | 在当前的用户语言里月份的简称 (例如 Jan) |
MMMM | 在当前的用户语言里月份的全称 (例如 January) |
y | 不含世纪的年份, 不含前导零 (0 – 99) |
yy | 不含世纪的年份, 含前导零 (00 - 99) |
yyyy | 含世纪的年份. 例如: 2005 |
gg | 当前用户区域设置的时代/纪元字符串(如果没有则为空) |
h | 不含前导零的小时数; 十二小时制格式 (1 - 12) |
hh | 含前导零的小时数; 十二小时制格式 (01 – 12) |
H | 不含前导零的小时数; 二十四小时制格式 (0 - 23) |
HH | 含前导零的小时数; 二十四小时制格式 (00– 23) |
m | 不含前导零的分钟数 (0 – 59) |
mm | 含前导零的分钟数 (00 – 59) |
s | 不含前导零的秒数 (0 – 59) |
ss | 含前导零的秒数 (00 – 59) |
t | 单字符时间标记, 例如 A 或 P (取决于区域设置) |
tt | 多字符时间标记, 例如 AM 或 PM (取决于区域设置) |
(Blank) | 留空 Format 参数则生成长日期后跟着时间. 例如, 在某些区域设置中它可能看起来像这样 4:55 PM Saturday, November 27, 2004 |
Time | 当前用户区域设置的时间表示, 例如 5:26 PM |
ShortDate | 当前用户区域设置的短日期表示, 例如 02/29/04 |
LongDate | 当前用户区域设置的长日期表示, 例如 Friday, April 23, 2004 |
YearMonth | 当前用户区域设置的年份和月份格式, 例如 February, 2004 |
YDay | 不含前导零的年份的天数 (1 – 366) |
YDay0 | 含前导零的年份的天数 (001 – 366) |
WDay | 星期的天数 (1 – 7). 星期日为 1. |
YWeek | ISO 8601 中规定的完全年份和周数. 例如: 200453. 如果新年里的含有1月1日的星期含有四天或更多, 那么它被称为是第一星期. 否则, 它是前一年的最后一周, 并且下一周才是新年的第一周. 因此, 1月4日和1月的首个星期四总是在第一周. |
下列选项可以紧跟在 YYYYMMDDHH24MISS 格式的时间戳参数后 (如果没有时间戳, 它们也可以单独使用). 在下面的例子中, 请注意最后的四项间没有逗号:
FormatTime, OutputVar, 20040228 LSys D1 D4
R: 与上述功能相反. 让日期在时间之前 (仅当 Format 为空时才有意义).
Ln: 如果此选项 不 存在, 则使用当前用户区域设置来格式化字符串. 要使用系统的区域设置, 请指定 LSys. 要使用特定的区域设置, 请指定字母 L 后面跟着十六进制或十进制的区域设置标识符 (LCID). 关于如何构建 LCID 的信息, 请在 www.microsoft.com 上搜索下列短语: Locale Identifiers
Dn: 日期选项. 请指定 n 为下列数字的其中一个:
0: 强制使用默认选项. 这也使得短日期生效.
1: 使用短日期 (仅当 Format 为空时才有意义; 与 2 和 8 不兼容).
2: 使用长日期 (仅当 Format 为空时才有意义; 与 1 和 8 不兼容).
4: 使用备用日历Use alternate calendar (如果有).
8: 使用年份-月份格式 (仅当 Format 为空时才有意义; 与 1 和 2 不兼容). 需要Windows 2000或更高版本的系统.
0x10: 为从左到右的阅读顺序布局添加标记. 仅在 Windows 2000 或更高版本的系统上才有效.
0x20: 为从右到左的阅读顺序布局添加标记. 仅在 Windows 2000 或更高版本的系统上才有效.
0x80000000: Do not obey any overrides the user may have in effect for the system's default date format.
0x40000000: 使用系统 ANSI 代码页而不是区域设置代码页进行字符串转换.
Tn: 时间选项. 请指定 n 为下列数字的其中一个:
0: 强制使用默认选项.这也使得分钟数和秒数被显示.
1: 省略分钟数和秒数.
2: 省略秒数.
4: 省略时间标记 (例如 AM/PM).
8: 始终使用二十四小时制而不是十二小时制.
12: 上面两种参数的组合.
0x80000000: Do not obey any overrides the user may have in effect for the system's default time format.
0x40000000: 使用系统 ANSI 代码页而不是区域设置代码页进行字符串转换.
请注意: Dn 和 Tn 参数可以重复多次以使多个选项生效, 例如: FormatTime, OutputVar, 20040228 D2 D4 T1 T8
从 Format 到 OutputVar 的转录时, 你希望原义转录的字母和数字必须包含在单引号中, 例如: 'Date:' MM/dd/yy 'Time:' hh:mm:ss tt
相比之下, 非字母数字字符, 例如空格,制表符,换行符 (`n), 斜杠,冒号,逗号和其他标点不需要包围在单引号中. 例外情况是单引号字符本身: 要产生原义的单引号, 请使用四个连续的单引号 (''''), 或仅使用两个引号如果它们已经包含在外部的一对引号中.
如果 Format 参数中同时包含日期和时间元素, 它们不能混用. 换句话说, 此字符串应该可分成两半: 一半时间,一半日期. 例如, 一个包含 "hh yyyy mm" 的格式字符串不会产生期望的结果, 因为它在两个时间元素间包含日期元素.
当 Format 参数中包含数值的天数 (d 或 dd) 跟着月份的全称 (MMMM), 则使用月份名称的所有格形式 (如果当前语言有所有格形式的话).
如果 Format 包含超过 2000 个字符, OutputVar 将被置空.
相关提示, 日期和时间的加减可以使用 EnvAdd 和 EnvSub 命令进行.
要进行反向的转换 -- 即 从 一个格式化的日期/时间 转到 YYYYMMDDHH24MISS 格式 -- 请参阅 www.autohotkey.com/forum/topic20405.html
请参考: Gui DateTime control, SetFormat, Transform, 内置的日期和时间变量, FileGetTime
FormatTime, TimeString MsgBox The current time and date (time first) is %TimeString%. FormatTime, TimeString, R MsgBox The current time and date (date first) is %TimeString%. FormatTime, TimeString,, Time MsgBox The current time is %TimeString%. FormatTime, TimeString, T12, Time MsgBox The current 24-hour time is %TimeString%. FormatTime, TimeString,, LongDate MsgBox The current date (long format) is %TimeString%. FormatTime, TimeString, 20050423220133, dddd MMMM d, yyyy hh:mm:ss tt MsgBox The specified date and time, when formatted, is %TimeString%. FormatTime, TimeString, 200504, 'Month Name': MMMM`n'Day Name': dddd MsgBox %TimeString% FormatTime, YearWeek, 20050101, YWeek MsgBox January 1st of 2005 is in the following ISO year and week number: %YearWeek%
?
; Change the date-time stamp of a file: FileSelectFile, FileName, 3,, Pick a file if FileName = ; The user didn't pick a file. return FileGetTime, FileTime, %FileName% FormatTime, FileTime, %FileTime% ; Since the last parameter is omitted, the long date and time are retrieved. MsgBox The selected file was last modified at %FileTime%.
?
; The following function converts the specified number of seconds into the corresponding ; number of hours, minutes, and seconds (hh:mm:ss format). MsgBox % FormatSeconds(7384) ; 7384 = 2 hours + 3 minutes + 4 seconds. It yields: 2:03:04 FormatSeconds(NumberOfSeconds) ; Convert the specified number of seconds to hh:mm:ss format. { time = 19990101 ; *Midnight* of an arbitrary date. time += %NumberOfSeconds%, seconds FormatTime, mmss, %time%, mm:ss return NumberOfSeconds//3600 ":" mmss ; This method is used to support more than 24 hours worth of sections. }