C++11 - std::chrono - 使用std::chrono::duration_cast进行时间转换

1 小时转换为分钟/秒/毫秒/微秒

#include <iostream>
#include <string>
#include <chrono>


int main()
{
	std::chrono::hours hour_time = std::chrono::hours(1);

	std::chrono::minutes minutes_time = std::chrono::duration_cast<std::chrono::minutes>(hour_time);

	std::chrono::seconds seconds_time = std::chrono::duration_cast<std::chrono::seconds>(hour_time);

	std::chrono::milliseconds milliseconds_time = std::chrono::duration_cast<std::chrono::milliseconds>(hour_time);

	std::chrono::microseconds microseconds_time = std::chrono::duration_cast<std::chrono::microseconds>(hour_time);

	std::cout << "1小时可转换为 \n"
		<< minutes_time.count() << "分钟 \n"
		<< seconds_time.count() << "秒 \n"
		<< milliseconds_time.count() << "毫秒 \n"
		<< microseconds_time.count() << "微秒" << std::endl;

	getchar();
	return 0;
}

2 分钟转换为小时/秒/毫秒/微秒

#include <iostream>
#include <string>
#include <chrono>


int main()
{
	std::chrono::minutes minutes_time = std::chrono::minutes(66);

	std::chrono::hours hours_time = std::chrono::duration_cast<std::chrono::hours>(minutes_time);

	std::chrono::seconds seconds_time = std::chrono::duration_cast<std::chrono::seconds>(minutes_time);

	std::chrono::milliseconds milliseconds_time = std::chrono::duration_cast<std::chrono::milliseconds>(minutes_time);

	std::chrono::microseconds microseconds_time = std::chrono::duration_cast<std::chrono::microseconds>(minutes_time);

	std::cout << "分钟可转换为 \n"
		<< hours_time.count() << "小时 \n"
		<< seconds_time.count() << "秒 \n"
		<< milliseconds_time.count() << "毫秒 \n"
		<< microseconds_time.count() << "微秒" << std::endl;

	getchar();
	return 0;
}

3 秒转换为小时/分钟/毫秒/微秒

#include <iostream>
#include <string>
#include <chrono>


int main()
{
	std::chrono::seconds seconds_time = std::chrono::seconds(36000);

	std::chrono::hours hours_time = std::chrono::duration_cast<std::chrono::hours>(seconds_time);

	std::chrono::minutes minutes_time = std::chrono::duration_cast<std::chrono::minutes>(seconds_time);

	std::chrono::milliseconds milliseconds_time = std::chrono::duration_cast<std::chrono::milliseconds>(seconds_time);

	std::chrono::microseconds microseconds_time = std::chrono::duration_cast<std::chrono::microseconds>(seconds_time);

	std::cout << "秒钟可转换为 \n"
		<< hours_time.count() << "小时 \n"
		<< minutes_time.count() << "分钟 \n"
		<< milliseconds_time.count() << "毫秒 \n"
		<< microseconds_time.count() << "微秒" << std::endl;

	getchar();
	return 0;
}

4 毫秒转换为小时/分钟/秒/微秒

#include <iostream>
#include <string>
#include <chrono>


int main()
{
	std::chrono::milliseconds milliseconds_time = std::chrono::milliseconds(3600000);

	std::chrono::hours hours_time = std::chrono::duration_cast<std::chrono::hours>(milliseconds_time);

	std::chrono::minutes minutes_time = std::chrono::duration_cast<std::chrono::minutes>(milliseconds_time);

	std::chrono::seconds seconds_time = std::chrono::duration_cast<std::chrono::seconds>(milliseconds_time);

	std::chrono::microseconds microseconds_time = std::chrono::duration_cast<std::chrono::microseconds>(milliseconds_time);

	std::cout << "毫秒可转换为 \n"
		<< hours_time.count() << "小时 \n"
		<< minutes_time.count() << "分钟 \n"
		<< seconds_time.count() << "秒 \n"
		<< microseconds_time.count() << "微秒" << std::endl;

	getchar();
	return 0;
}

5 微秒转换为小时/分钟/秒/毫秒

#include <iostream>
#include <string>
#include <chrono>


int main()
{
	std::chrono::microseconds microseconds_time = std::chrono::microseconds(3600000000);

	std::chrono::hours hours_time = std::chrono::duration_cast<std::chrono::hours>(microseconds_time);

	std::chrono::minutes minutes_time = std::chrono::duration_cast<std::chrono::minutes>(microseconds_time);

	std::chrono::seconds seconds_time = std::chrono::duration_cast<std::chrono::seconds>(microseconds_time);

	std::chrono::milliseconds milliseconds_time = std::chrono::duration_cast<std::chrono::milliseconds>(microseconds_time);

	std::cout << "微秒可转换为 \n"
		<< hours_time.count() << "小时 \n"
		<< minutes_time.count() << "分钟 \n"
		<< seconds_time.count() << "秒 \n"
		<< milliseconds_time.count() << "毫秒" << std::endl;

	getchar();
	return 0;
}

6 自定义duration进行转换

#include <iostream> 
#include <chrono> 
 
typedef std::chrono::duration<float, std::ratio<3, 1> > three_seconds; 
typedef std::chrono::duration<float, std::ratio<1, 10> > one_tenth_seconds; 
 
int main() 
{ 
    three_seconds s = std::chrono::duration_cast<three_seconds>(one_tenth_seconds(3)); 
    std::cout << "3 [1/10 seconds] equal to " << s.count() << " [3 seconds]\n"; 
    std::cin.get(); 
}

如果有兴趣可以访问我的个站:https://www.stubbornhuang.com,更多知识等着您去发现!

  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: std::chrono::duration_cast是C++11标准库中的一个函数模板,用于将一个时间段(duration)从一个时间单位转换为另一个时间单位。它的语法如下: template <class ToDuration, class Rep, class Period> constexpr ToDuration duration_cast(const duration<Rep, Period>& d); 其中,ToDuration是目标时间单位的类型,Rep是时间段的计数类型,Period是时间段的计数单位。该函数返回一个ToDuration类型的时间段,表示将输入的时间段d转换为目标时间单位的时间段。 例如,将一个以秒为单位的时间转换为以毫秒为单位的时间段,可以使用以下代码: std::chrono::duration<double> seconds(1.5); std::chrono::milliseconds milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(seconds); 这里,我们定义了一个以秒为单位的时间段seconds,然后使用duration_cast将其转换为以毫秒为单位的时间段milliseconds。最终,milliseconds的值为1500毫秒。 ### 回答2: std::chrono::duration_cast是C++11标准库中的一个模板函数,用于将std::chrono::duration类型的时间间隔值转换为其他时间间隔单位的类型。在C++中,时间间隔可以被表示为不同的时间单位,例如纳秒、微秒、毫秒、秒、分、时、天等等。std::chrono::duration_cast函数可以在这些时间单位之间进行转换std::chronoC++标准库中关于时间的新特性,它提供了一组新的类和函数,方便我们处理时间相关的问题。std::chrono::durationC++标准库中表示时间间隔的类,它的实现方式是以纳秒为基础单位,使用模板来实现长度可变的时间间隔类型。 std::chrono::duration_cast函数的原型如下: ``` template <class ToDuration, class Rep, class Period> constexpr ToDuration duration_cast(const duration<Rep, Period>& d); ``` 其中,ToDuration代表要转换成的时间间隔类型,Rep代表时间间隔的值的类型,Period代表时间间隔的单位。std::chrono::duration_cast函数接收一个std::chrono::duration类型的参数,并将其转换为ToDuration类型的值。ToDuration必须是std::chrono::duration类型的模板实例,且单位必须是能由被转换std::chrono::duration类型表示的单位。转换过程中,精度可能会有损失。 使用std::chrono::duration_cast函数进行时间间隔转换的示例代码如下: ``` #include <chrono> #include <iostream> int main() { std::chrono::milliseconds ms(100); std::chrono::seconds s = std::chrono::duration_cast<std::chrono::seconds>(ms); std::cout << s.count() << " seconds" << std::endl; return 0; } ``` 在上面的代码中,我们定义了一个std::chrono::milliseconds类型的变量ms,它表示了100毫秒的时间间隔。然后,我们使用std::chrono::duration_cast函数,将ms转换成了std::chrono::seconds类型的变量s,并输出了它的值。从输出可以看出,这个时间间隔确实被正确地转换成了秒。 总之,std::chrono::duration_cast函数是C++11标准库中用于时间间隔转换的重要工具函数,它可以将一个时间间隔值在不同的时间单位之间进行转换使用这个函数可以方便地进行时间的计算和比较。 ### 回答3: std::chrono::duration_cast是C++11中的一个类型转换函数模板,用于将一个时间间隔(duration)从一个时间单位转换为另一个时间单位。可用于将高分辨率时钟的时间转换为较小时间精度的值,或将时间精度从毫秒转换为微秒。 std::chrono::duration_cast函数需要两个参数:目标类型和源类型,其中源类型是一个时间间隔(duration)类型,表示一段时间长度,而目标类型是任何代表时间单位的类型,如std::chrono::seconds,std::chrono::milliseconds或std::chrono::microseconds等。 函数的作用是将源类型的时间间隔转换为目标类型的时间间隔。这个转换是通过对源类型和目标类型之间的比例关系进行简单的算术运算来实现的。 简单使用示例: ```c++ #include <iostream> #include <chrono> int main() { std::chrono::milliseconds ms(1000); std::chrono::microseconds us = std::chrono::duration_cast<std::chrono::microseconds>(ms); std::cout << us.count() << "us\n"; // 输出结果:1000000us return 0; } ``` 在上述示例中,我们定义了一个名为ms的std::chrono::milliseconds类型的变量,表示1000毫秒的时间间隔。然后我们使用std::chrono::duration_cast函数将这个时间间隔转换std::chrono::microseconds类型的时间间隔,并将结果存储在一个名为us的变量中。最后,我们将us的计数值打印到控制台上,以确保转换正确。 总之,std::chrono::duration_cast是一个非常实用的函数模板,可用于将时间间隔从一种时间单位转换为另一种时间单位,从而实现时间间隔的转换和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HW140701

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值