如何使用C ++/ C ++11打印当前时间
答案:2 悬赏:50 手机版
解决时间 2021-02-12 01:23
- 提问者网友:山高云阔
- 2021-02-11 22:17
如何使用C ++/ C ++11打印当前时间
最佳答案
- 五星知识达人网友:煞尾
- 2021-02-11 22:39
1. 你提升的Posix的。
您boost::posix_time::microsec_clock::local_time()获得从微秒分辨率的时钟电流:
boost::posix_time::ptime now = boost::posix_time::microsec_clock::local_time();
然后你在当天的偏移量(因为你的时间输出表单::.,我假设他们被计算为当前日期的偏移,如果不是,可以自由的另一个起点,持续时间/间隔):
boost::posix_time::time_duration td = now.time_of_day();
然后你.hours(),.minutes(),.seconds()访问器来获取相应的值。
不幸的是 CodeGo.net,似乎没有成为一个.milliseconds()存取器,但是有一.total_milliseconds()之一,所以你可以做一个小减法运算得到的剩余毫秒的字符串进行格式化。
然后你sprintf()(或sprintf()_s如果你有兴趣在非便携的VC ++代码只),以这些字段格式化为原料char缓冲液,并安全地包装这个原始的C字符串缓冲区成方便std::string实例。
请参见下面的代码进一步的细节。
输出在控制台是这样的:
11:43:52.276
示例代码:
///////////////////////////////////////////////////////////////////////////////
#include // for sprintf()
#include // for console output
#include // for std::string
#include
//-----------------------------------------------------------------------------
// Format current time (calculated as an offset in current day) in this form:
//
// "hh:mm:ss.SSS" (where "SSS" are milliseconds)
//-----------------------------------------------------------------------------
std::string now_str()
{
// Get current time from the clock, using microseconds resolution
const boost::posix_time::ptime now =
boost::posix_time::microsec_clock::local_time();
// Get the time offset in current day
const boost::posix_time::time_duration td = now.time_of_day();
//
// Extract hours, minutes, seconds and milliseconds.
//
// Since there is no direct accessor ".milliseconds()",
// milliseconds are computed _by difference_ between total milliseconds
// (for which there is an accessor), and the hours/minutes/seconds
// values previously fetched.
//
const long hours = td.hours();
const long minutes = td.minutes();
const long seconds = td.seconds();
const long milliseconds = td.total_milliseconds() -
((hours * 3600 + minutes * 60 + seconds) * 1000);
//
// Format like this:
//
// hh:mm:ss.SSS
//
// e.g. 02:15:40:321
//
// ^ ^
// | |
// 123456789*12
// ---------10- --> 12 chars + \0 --> 13 chars should suffice
//
//
char buf[40];
sprintf(buf, "%02ld:%02ld:%02ld.%03ld",
hours, minutes, seconds, milliseconds);
return buf;
}
int main()
{
std::cout << now_str() << '\n';
}
///////////////////////////////////////////////////////////////////////////////
您boost::posix_time::microsec_clock::local_time()获得从微秒分辨率的时钟电流:
boost::posix_time::ptime now = boost::posix_time::microsec_clock::local_time();
然后你在当天的偏移量(因为你的时间输出表单
boost::posix_time::time_duration td = now.time_of_day();
然后你.hours(),.minutes(),.seconds()访问器来获取相应的值。
不幸的是 CodeGo.net,似乎没有成为一个.milliseconds()存取器,但是有一.total_milliseconds()之一,所以你可以做一个小减法运算得到的剩余毫秒的字符串进行格式化。
然后你sprintf()(或sprintf()_s如果你有兴趣在非便携的VC ++代码只),以这些字段格式化为原料char缓冲液,并安全地包装这个原始的C字符串缓冲区成方便std::string实例。
请参见下面的代码进一步的细节。
输出在控制台是这样的:
11:43:52.276
示例代码:
///////////////////////////////////////////////////////////////////////////////
#include
#include
#include
#include
//-----------------------------------------------------------------------------
// Format current time (calculated as an offset in current day) in this form:
//
// "hh:mm:ss.SSS" (where "SSS" are milliseconds)
//-----------------------------------------------------------------------------
std::string now_str()
{
// Get current time from the clock, using microseconds resolution
const boost::posix_time::ptime now =
boost::posix_time::microsec_clock::local_time();
// Get the time offset in current day
const boost::posix_time::time_duration td = now.time_of_day();
//
// Extract hours, minutes, seconds and milliseconds.
//
// Since there is no direct accessor ".milliseconds()",
// milliseconds are computed _by difference_ between total milliseconds
// (for which there is an accessor), and the hours/minutes/seconds
// values previously fetched.
//
const long hours = td.hours();
const long minutes = td.minutes();
const long seconds = td.seconds();
const long milliseconds = td.total_milliseconds() -
((hours * 3600 + minutes * 60 + seconds) * 1000);
//
// Format like this:
//
// hh:mm:ss.SSS
//
// e.g. 02:15:40:321
//
// ^ ^
// | |
// 123456789*12
// ---------10- --> 12 chars + \0 --> 13 chars should suffice
//
//
char buf[40];
sprintf(buf, "%02ld:%02ld:%02ld.%03ld",
hours, minutes, seconds, milliseconds);
return buf;
}
int main()
{
std::cout << now_str() << '\n';
}
///////////////////////////////////////////////////////////////////////////////
全部回答
- 1楼网友:杯酒困英雄
- 2021-02-11 22:52
虽然我很聪明,但这么说真的难到我了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯