Autohotkey v2 获取当前时间戳函数的实现 ahk所有关于时间的操作总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Autohotkey v2 获取当前时间戳函数的实现 ahk所有关于时间的操作总结相关的知识,希望对你有一定的参考价值。
参考技术A获取当前时间戳,ahk没有提供一个默认的函数,其实实现起来也不是很难
unix时间戳实际上是1970年1月1日 0点准点的时间到当前时间(UTC时区)的秒数。也有毫秒级的时间戳,但是一般的应用场景,秒就够用了。
autohotkey 关于时间格式化的函数FormatTime都提供了,竟然就没有一个直接获取时间戳的,也是挺迷
另外还有两个对时间进行计算的函数 DateDiff和DateAdd
这次我们用DateDiff函数进行实现
下面了解ahk获取时间相关的操作
将 YYYYMMDDHH24MISS 时间戳转换为指定的日期/时间格式.
第一个参数是特定格式的时间,如果省略这个参数就表示使用当前时间。
YYYYMMDDHH24MISS 格式中元素表示的含义分别为:
所以我们格式化时间,只需要给出后面的格式化字符串,能够用的项目也是比较复杂的
下面的格式必须 单独 使用; 即在 Format 参数中不能含有其他格式或文本. 这些格式不区分大小写.
下列选项可以紧跟在 YYYYMMDDHH24MISS 时间戳后(如果没有时间戳, 它们也可以单独使用). 在下面的例子中, 请注意最后的四项间没有逗号:
R : 反转. 让日期在时间之前(仅当 Format 为空时才有意义).
Ln : 如果此选项 不 存在, 则使用当前用户区域设置来格式化字符串. 要使用系统的区域设置, 请指定 LSys. 要使用特殊的区域设置, 请指定字母 L 后面跟着十六进制或十进制的区域设置标识符(LCID). 关于如何构建 LCID 的信息, 请在 www.microsoft.com 上搜索下列短语: Locale Identifiers
Dn : 日期选项. 请指定 n 为下列数字的其中一个:
Tn : 时间选项. 请指定 n 为下列数字的其中一个:
注意 : Dn 和 Tn 可以使用多次以使多个选项生效, 例如: FormatTime("20040228 D2 D4 T1 T8")
这边格式化字符串能搞的花样还是挺多的。
顺便官网上的例子:
DateTime1
DateTime2
类型: 字符串
YYYYMMDDHH24MISS 格式的日期-时间戳.
如果 DateTime1 早于 DateTime2 , 则结果为负数.
如果是空串就会使用当前时间 A_Now.
TimeUnits
类型: 字符串
测量差异所用的单位. TimeUnits 可以是下列字符串之一(也可以是其第一个字母): Seconds(秒), Minutes(分), Hours(小时) 或 Days(天).
返回值是整数
返回值是字符串
C/C++时间戳转换函数
目录
生成时间戳
time函数
函数原型
time_t类型是long int类型
获取当前时间戳
#include<iostream>
#include<ctime>
int main()
std::cout << "当前时间戳:"<<time(nullptr) << std::endl;
return 0;
执行结果:
转为北京时间即 2022-03-16 23:05:46
转换时间戳为北京时间
gmtime函数
函数原型:
【GMT】Greenwich Mean Time
格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治时)的时间。
地球每天的自转是有些不规则的,而且正在缓慢减速。所以,格林尼治时间已经不再被作为标准时间使用。现在的标准时间──世界标准时间(UTC【UTC】世界标准时间
法文“Temps Universel Cordonné”缩写则为“TUC”
英文“Coordinated Universal Time”缩写为“CUT”
国际电信联盟折中的方案为 UTC(Universal Time Coordinated)北京时间=UTC+8=GMT+8
gmtime将时间戳默认转化为UTC时间
struct tm结构体
使用方法
#include <time.h>
int main()
struct tm *mytm;
time_t t = time(NULL);
mytm =gmtime(&t);
return 0;
1647444460对应的北京时间是2022-03-16 23:27:40
而tm_hour的时间却是15,因此需要加上8转为北京时间
对应的tm_mon、tm_year似乎也是不对,这里我们发现tm_mon+1、tm_year+1900即可
不过除了tm_hour时间我们需要自己加上8,其它成员交给另一个函数strftime函数即可
strftime函数
函数原型
函数功能就是把时间戳按指定的格式转为字符串
使用方法
#include <iostream>
#include <time.h>
using namespace std;
int main()
char myStr[25] = 0 ;
time_t cur_t = 1647444460;
struct tm *t = gmtime(&cur_t);
t->tm_hour += 8;//转为北京时间记的要加8
std::string myFormat = "%Y-%m-%d:%H:%M:%S";
strftime(myStr, sizeof(myStr), myFormat.c_str(), t);
for (int i = 0; myStr[i]; ++i)
cout << myStr[i];
cout << endl;
return 0;
执行结果:
以上是关于Autohotkey v2 获取当前时间戳函数的实现 ahk所有关于时间的操作总结的主要内容,如果未能解决你的问题,请参考以下文章