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函数

函数原型

获取当前时间戳

转换时间戳为北京时间

 gmtime函数

函数原型: 

 struct tm结构体

 使用方法

strftime函数 

函数原型 

 使用方法


 

生成时间戳

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所有关于时间的操作总结的主要内容,如果未能解决你的问题,请参考以下文章

php 哪个函数可以获取当前时间的毫秒值?在线等

时间戳的函数中

PHP获取当前时间戳,当前时间及解决时区问题

php怎么获取今天零点的时间戳

新手php时间戳的问题如何获取每天凌晨的时间戳?

PHP获取时间戳类怎么写?