cwTime.h/cpp: Added formatDateTime()
This commit is contained in:
parent
e6412b2538
commit
c93a9670f9
37
cwTime.cpp
37
cwTime.cpp
@ -41,6 +41,7 @@ void cw::time::get( spec_t& t )
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef OS_LINUX
|
#ifdef OS_LINUX
|
||||||
|
#include <sys/time.h> // gettimeofday()
|
||||||
void cw::time::get( spec_t& t )
|
void cw::time::get( spec_t& t )
|
||||||
{
|
{
|
||||||
// NOTcw::mutex::lock(h,timeout) relies on using
|
// NOTcw::mutex::lock(h,timeout) relies on using
|
||||||
@ -306,6 +307,42 @@ void cw::time::microsecondsToSpec( spec_t& ts, unsigned us )
|
|||||||
ts.tv_nsec = ns;
|
ts.tv_nsec = ns;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
unsigned cw::time::formatDateTime( char* buffer, unsigned bufN, bool includeDateFl )
|
||||||
|
{
|
||||||
|
// from here: https://stackoverflow.com/questions/3673226/how-to-print-time-in-format-2009-08-10-181754-811
|
||||||
|
int millisec;
|
||||||
|
struct tm* tm_info;
|
||||||
|
struct timeval tv;
|
||||||
|
int n = 0;
|
||||||
|
|
||||||
|
gettimeofday(&tv, NULL);
|
||||||
|
|
||||||
|
millisec = lrint(tv.tv_usec/1000.0); // Round to nearest millisec
|
||||||
|
|
||||||
|
// Allow for rounding up to nearest second
|
||||||
|
if (millisec>=1000)
|
||||||
|
{
|
||||||
|
millisec -=1000;
|
||||||
|
tv.tv_sec++;
|
||||||
|
}
|
||||||
|
|
||||||
|
tm_info = localtime(&tv.tv_sec);
|
||||||
|
|
||||||
|
const char* fmt = "%H:%M:%S";
|
||||||
|
|
||||||
|
if( includeDateFl )
|
||||||
|
fmt = "%Y:%m:%d %H:%M:%S";
|
||||||
|
|
||||||
|
|
||||||
|
n = strftime(buffer, bufN, fmt, tm_info);
|
||||||
|
|
||||||
|
if( n < (int)bufN && bufN-n >= 5 )
|
||||||
|
n = snprintf(buffer + n, bufN-n,".%03d", millisec);
|
||||||
|
|
||||||
|
return (unsigned)n;
|
||||||
|
}
|
||||||
|
|
||||||
cw::rc_t cw::time::test()
|
cw::rc_t cw::time::test()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
3
cwTime.h
3
cwTime.h
@ -78,6 +78,9 @@ namespace cw
|
|||||||
void millisecondsToSpec( spec_t& ts, unsigned ms );
|
void millisecondsToSpec( spec_t& ts, unsigned ms );
|
||||||
void microsecondsToSpec( spec_t& ts, unsigned us );
|
void microsecondsToSpec( spec_t& ts, unsigned us );
|
||||||
|
|
||||||
|
// Return count of bytes in in buf[]
|
||||||
|
unsigned formatDateTime( char* buf, unsigned bufN, bool includeDateFl=false );
|
||||||
|
|
||||||
rc_t test();
|
rc_t test();
|
||||||
|
|
||||||
//)
|
//)
|
||||||
|
Loading…
Reference in New Issue
Block a user