Getting the current time (in milliseconds) from the system clock in Windows?
To get the time expressed as UTC, use GetSystemTime
in the Win32 API.
SYSTEMTIME st;
GetSystemTime(&st);
SYSTEMTIME
is documented as having these relevant members:
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
As shf301 helpfully points out below, GetLocalTime
(with the same prototype) will yield a time corrected to the user's current timezone.
You have a few good answers here, depending on what you're after. If you're looking for just time of day, my answer is the best approach -- if you need solid dates for arithmetic, consider Alex's. There's a lot of ways to skin the time cat on Windows, and some of them are more accurate than others (and nobody has mentioned QueryPerformanceCounter
yet).
How can I get the Windows system time with millisecond resolution?
GetTickCount
will not get it done for you.
Look into QueryPerformanceFrequency
/ QueryPerformanceCounter
. The only gotcha here is CPU scaling though, so do your research.
How to get current system time in milliseconds from 1/1/1970 (C++)
You can use GetSystemTimeAsFileTime
to get the current time as a FILETIME
. Create a SYSTEMTIME
representing your desired epoch (1/1/1970) and call SystemTimeToFileTime
to convert it to a FILETIME
. Subtract the two FILETIME
s and scale to your desired accuracy (from 100ns units to 1ms units).
This will give you the current UTC time. If you need the local time, you'll need to convert to local time using e.g. SystemTimeToTzSpecificLocalTime
.
How to get the time elapsed in C in milliseconds? (Windows)
A cross platform way is to use ftime.
Windows specific link here: http://msdn.microsoft.com/en-us/library/aa297926(v=vs.60).aspx
Example below.
#include <stdio.h>
#include <sys\timeb.h>
int main()
{
struct timeb start, end;
int diff;
int i = 0;
ftime(&start);
while(i++ < 999) {
/* do something which takes some time */
printf(".");
}
ftime(&end);
diff = (int) (1000.0 * (end.time - start.time)
+ (end.millitm - start.millitm));
printf("\nOperation took %u milliseconds\n", diff);
return 0;
}
I ran the code above and traced through it using VS2008 and saw it actually calls the windows GetSystemTimeAsFileTime function.
Anyway, ftime will give you milliseconds precision.
Get system time accurate to milliseconds in Windows cmd
As Neil pointed out there is no native solution in cmd. For anyone who has the option of using PowerShell instead, you could use the following:
(Get-Date -UFormat "%Y-%m-%d %H:%M:%S").toString() + "." + ((Get-Date).millisecond)
There may be a more succinct way of doing it but this worked for my purposes.
Since the question is tagged cmd
the appropriate command line for calling this from cmd is:
powershell -command "(Get-Date -UFormat '%Y-%m-%d %H:%M:%S').toString() + '.' + ((Get-Date).millisecond)"
How to get the current time in milliseconds in C Programming
quick answer
#include<stdio.h>
#include<time.h>
int main()
{
clock_t t1, t2;
t1 = clock();
int i;
for(i = 0; i < 1000000; i++)
{
int x = 90;
}
t2 = clock();
float diff = ((float)(t2 - t1) / 1000000.0F ) * 1000;
printf("%f",diff);
return 0;
}
How to get time in milliseconds or nanoseconds in C++
If you are ok with a platform specific implementation (windows) look at the QueryPerformanceCounter API.
And this answer has a quick example of usage.
Related Topics
Member Initializer Does Not Name a Non-Static Data Member or Base Class
There Are No Arguments That Depend on a Template Parameter
Macro to Replace C++ Operator New
C++ Cannot Convert from Base a to Derived Type B via Virtual Base A
Proper Way of Casting Pointer Types
Can Templates Be Used to Access Struct Variables by Name
Program Being Compiled Differently in 3 Major C++ Compilers. Which One Is Right
Fatal Error C1010 - "Stdafx.H" in Visual Studio How Can This Be Corrected
Error Lnk2005: New and Delete Already Defined in Libcmtd.Lib(New.Obj)
Import C++ Function into Python Program
How to Define a Move Constructor
"Winapifamily.H: No Such File or Directory" When Compiling Sdl in Code::Blocks
Function Template with an Operator
How to Catch Out of Memory Exception in C++
Overload Resolution and Arrays: Which Function Should Be Called