我需要从计时器获得毫秒
// get timer part
time_t timer = time(NULL);
struct tm now = *localtime( &timer );
char timestamp[256];
// format date time
strftime(timestamp, sizeof(timestamp), "%Y-%m-%d_%H.%M.%S", &now);
Run Code Online (Sandbox Code Playgroud)
我希望在C#中得到这样的结果:
DateTime.Now.ToString("yyyy-MM-dd_HH.mm.ss.ff")
Run Code Online (Sandbox Code Playgroud)
我尝试使用%f或%F,但它确实适用于C++.如何从tm获得%f的毫秒数?
提前致谢
bam*_*s53 17
#include <chrono>
typedef std::chrono::system_clock Clock;
auto now = Clock::now();
auto seconds = std::chrono::time_point_cast<std::chrono::seconds>(now);
auto fraction = now - seconds;
time_t cnow = Clock::to_time_t(now);
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用秒精度打印出time_t,然后打印分数所代表的任何内容.可能是毫秒,微秒或其他东西.要专门获得毫秒:
auto milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(fraction);
std::cout << milliseconds.count() << '\n';
Run Code Online (Sandbox Code Playgroud)
在Windows上使用Win32 API SYSTEMTIME结构将为您提供毫秒.然后,您应该使用时间函数来获取时间.像这样:
#include <windows.h>
int main()
{
SYSTEMTIME stime;
//structure to store system time (in usual time format)
FILETIME ltime;
//structure to store local time (local time in 64 bits)
FILETIME ftTimeStamp;
char TimeStamp[256];//to store TimeStamp information
GetSystemTimeAsFileTime(&ftTimeStamp); //Gets the current system time
FileTimeToLocalFileTime (&ftTimeStamp,<ime);//convert in local time and store in ltime
FileTimeToSystemTime(<ime,&stime);//convert in system time and store in stime
sprintf(TimeStamp, "%d:%d:%d:%d, %d.%d.%d",stime.wHour,stime.wMinute,stime.wSecond,
stime.wMilliseconds, stime.wDay,stime.wMonth,stime.wYear);
printf(TimeStamp);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是另一个 c++11 答案:
#include <iostream>
#include <iomanip>
#include <chrono>
#ifdef WIN32
#define localtime_r(_Time, _Tm) localtime_s(_Tm, _Time)
#endif
int main()
{
tm localTime;
std::chrono::system_clock::time_point t = std::chrono::system_clock::now();
time_t now = std::chrono::system_clock::to_time_t(t);
localtime_r(&now, &localTime);
const std::chrono::duration<double> tse = t.time_since_epoch();
std::chrono::seconds::rep milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(tse).count() % 1000;
std::cout << (1900 + localTime.tm_year) << '-'
<< std::setfill('0') << std::setw(2) << (localTime.tm_mon + 1) << '-'
<< std::setfill('0') << std::setw(2) << localTime.tm_mday << ' '
<< std::setfill('0') << std::setw(2) << localTime.tm_hour << ':'
<< std::setfill('0') << std::setw(2) << localTime.tm_min << ':'
<< std::setfill('0') << std::setw(2) << localTime.tm_sec << '.'
<< std::setfill('0') << std::setw(3) << milliseconds
<< std::endl;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
有getimeofday()函数.以ms为单位返回时间请点击此处:http://souptonuts.sourceforge.net/code/gettimeofday.c.html
| 归档时间: |
|
| 查看次数: |
53369 次 |
| 最近记录: |