获得精确时间到微秒

#include "windows.h"
#include "stdio.h"
#include "inttypes.h"
int main()
{
	FILETIME flt;
	SYSTEMTIME st, lot;
	__int64 wintime;
	__int64 seconds;
	__int64 nano_seconds;
	int milliseconds;
	int microsecond;
	
	// Windows 2000 Professional [desktop apps | UWP apps]
	GetSystemTimeAsFileTime((FILETIME*)&wintime);

	// Windows 8 [desktop apps | UWP apps]
	//GetSystemTimePreciseAsFileTime((FILETIME*)&wintime);
	
	wintime      -=116444736000000000; 
	seconds = wintime / 10000000;
	nano_seconds = wintime % 10000000 * 100;
	milliseconds = nano_seconds / 1000000;
	microsecond = (nano_seconds - milliseconds * 1000000)/100;
	
	//printf("The file time is: seconds %lld nano-seconds %lld   milliseconds %d %ld\n", 
	//    seconds, nano_seconds, milliseconds, microsecond);

	FileTimeToSystemTime((FILETIME*)&wintime, &st);
	FileTimeToLocalFileTime((FILETIME*)&wintime, &flt);
	FileTimeToSystemTime(&flt, &lot);

	printf("The system time is: %02d:%02d:%02d.%03d.%04d \n", 
	    st.wHour, st.wMinute , st.wSecond, milliseconds, microsecond);

	printf("The local  time is: %02d:%02d:%02d.%03d.%04d \n", 
	    lot.wHour, lot.wMinute , lot.wSecond, milliseconds, microsecond);
	return 0;
}

输出
The system time is: 13:08:30.045.2907
The local  time is: 21:08:30.045.2907

转载于:https://www.cnblogs.com/nlsoft/p/7944460.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用VBA中的`Timer`函数来获取当前时间,但是它只能精确级,无法达到微秒级的精度。要在VBA中获取微秒级的时间,您可以使用Windows API函数来实现。 以下是一个示例代码,演示如何使用Windows API函数获取微秒级的时间: ```vba Option Explicit #If VBA7 Then Declare PtrSafe Sub GetSystemTimePreciseAsFileTime Lib "kernel32" (ByRef lpSystemTimePrecise As FILETIME) #Else Declare Sub GetSystemTimePreciseAsFileTime Lib "kernel32" (ByRef lpSystemTimePrecise As FILETIME) #End If Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Function GetPreciseTime() As Double Dim systemTime As FILETIME Dim currentTicks As Double GetSystemTimePreciseAsFileTime systemTime currentTicks = (systemTime.dwHighDateTime * 2 ^ 32 + systemTime.dwLowDateTime) / 10 ' 转换为微秒 GetPreciseTime = currentTicks End Function Sub Test() Dim startTime As Double Dim endTime As Double startTime = GetPreciseTime() ' 这里放置您要测试的代码 endTime = GetPreciseTime() MsgBox "代码执行时间微秒): " & endTime - startTime End Sub ``` 在上面的示例代码中,`GetSystemTimePreciseAsFileTime`函数从系统获取当前时间精确到纳级),然后通过转换计算得到微秒级的时间。`GetPreciseTime`函数返回当前时间微秒数。您可以在`Test`子过程中放置您要测试的代码,在执行结束后,会弹出一个消息框显示代码执行的时间(单位为微秒)。 请注意,`GetSystemTimePreciseAsFileTime`函数在Windows 8及更高版本的操作系统中可用。如果您的操作系统不支持此函数,您可以考虑使用其他方法来获取微秒级的时间,例如使用第三方库或插件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值