//#include "Windows/AllowWindowsPlatformTypes.h"
//#include "Windows/PreWindowsApi.h"
//#include <windows.h> //冲突头文件 GetWTimestamp()使用到
//#include "Windows/PostWindowsApi.h"
//#include "Windows/HideWindowsPlatformTypes.h"
#include <math.h>
#include <cstring>
#include <ctime>
#include <time.h>
#include <string>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/timeb.h>
using namespace std;
UFUNCTION(BlueprintPure, Category = "Utilities")
static FString GetTimestamp();//时间戳 13位 毫秒级别
UFUNCTION(BlueprintPure, Category = "Utilities")
static double GetDiffTime(FString StartT, FString EndT);//参数StartT、 EndT 分别为开始和结束的时间戳,返回两个时间戳的差,单位秒
FString UXXXFunctionLibrary::GetTimestamp()
{
//当前时间戳
/*
FDateTime Time = FDateTime::Now();
//获取秒时间戳
int64 Timestamp = Time.ToUnixTimestamp();
FString StrTimestamp = FString::Printf(TEXT("%lld"), Timestamp);
UE_LOG(LogShooterInstance, Log, TEXT("%d"), Timestamp);
//获取毫秒时间戳
int64 M= 1000;
int64 MilliTimestamp = Time.ToUnixTimestamp() * M;
FString StrMilliTimestamp = FString::Printf(TEXT("%lld"), MilliTimestamp);
UE_LOG(LogShooterInstance, Log, TEXT("%d"), MilliTimestamp);
*/
//windows
/*std::string nowTimeUnix;
std::string cs_uninxtime;
std::string cs_milliseconds;
SYSTEMTIME sysTime;
GetLocalTime(&sysTime);
time_t unixTime;
time(&unixTime);
char buf[30], bufms[30];
sprintf_s(buf, sizeof(buf), "%I64d", (INT64)unixTime);
sprintf_s(bufms, sizeof(bufms), "%03I64d", (INT64)sysTime.wMilliseconds);
nowTimeUnix = string(buf) + string(bufms);
FString Timestamp = FString(nowTimeUnix.c_str());
UE_LOG(LogTemp, Log, TEXT("Timestamp:%s"), *Timestamp);
return Timestamp;*/
timeb t;
ftime(&t);
long long ms = t.time * 1000 + t.millitm;//自定义时间戳
FString Strtimestamp = FString::Printf(TEXT("%lld"), ms);
UE_LOG(LogBlueprintFunc, Log, TEXT("GetWTimestamp=%s"), *Strtimestamp);
return Strtimestamp;
}
double UXXXFunctionLibrary::GetDiffTime(FString StartT, FString EndT)
{
time_t start, end;
double cost;
std::string startStr(TCHAR_TO_UTF8(*StartT));
long long timestampStart = atoll(startStr.c_str());//int ms = timestamp % 1000;//取毫秒
start = (time_t)(timestampStart / 1000);//转换时间
std::string endStr(TCHAR_TO_UTF8(*EndT));
long long timestampEnd = atoll(endStr.c_str());
end = (time_t)(timestampEnd / 1000);//转换时间
cost = difftime(end, start);
return cost;
}
UE4/UE5获取时间戳和两个时间戳的差
最新推荐文章于 2024-05-28 16:00:00 发布