草庐IT

c++ - std::put_time 的 MSVC 实现

我正在使用MicrosoftVisualStudio2012,并且正在考虑使用std::put_time,因此我创建了以下示例:intmain(){std::time_tt=std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());std::locale::global(std::locale("en-GB"));std::cout这会产生以下输出:06/25/2013这不是我期望的en-GB语言环境的日期格式。我也试过:std::cout.imbue(std::locale("en-GB"));但是,

c++ - 使用 std::get_time 解析日期/时间字符串需要分隔符?

使用std::get_time解析字符串是否需要分隔符?我找不到一个引用来说明它是。我正在尝试解析ISO日期/时间字符串,例如“20140105T123456”——例如:例如,#include#include#include#include#includeintmain(intargc,char*argv[]){std::tmt={0};//failsstd::istringstreamss("20141105T123456");ss>>std::get_time(&t,"%Y%m%dT%H%M%S");//works//std::istringstreamss("20141105T1

c++ - std::string 到 std::chrono time_point

我有以下时间格式的字符串:“%Y-%m-%d%H:%M:%S.%f”其中%f是毫秒,例如:14:31:23.946571我想把它作为chronotime_point。有Actor阵容吗? 最佳答案 std::string没有转换至std::chrono::time_point.你必须建立std::chrono::time_point对象。使用除微秒以外的所有内容来构造std::tm对象()。年份应基于1900,而不是0。月份应基于0,而不是1。使用std::mktime()创建一个std::time_t目的。创建std::chron

c++ - 为什么 C 可以在没有其库的情况下编译 time()?

当我使用time()函数(即只是随机化rand()的种子)但不包括头文件time.h,它适用于C。例如:#include#includeintmain(){inti;srand(time(NULL));for(i=0;i当我尝试编译上面的代码时,g++无法编译它,因为未包含time.h。但是gcc可以。$gccra.c$./a.out4524873893$g++ra.cra.c:Infunction‘intmain()’:ra.c:8:20:error:‘time’wasnotdeclaredinthisscopesrand(time(NULL));^它与gcc的版本有关还是只是C/C

c++ - 将 double 转换为 time_t

我有一个包含秒的double。我想将其转换为time_t。我找不到完成此操作的标准函数。我必须手动填写time_t吗? 最佳答案 std::time_t的类型未指定。Althoughnotdefined,thisisalmostalwaysanintegralvalueholdingthenumberofseconds(notcountingleapseconds)since00:00,Jan11970UTC,correspondingtoPOSIXtime.因此,只要在它们之间进行安全转换就可以了。还要注意可移植性(因为它的类型未

c++ - boost::TIME_UTC(_) 具有不同的 boost 版本

我刚刚将Windows上的项目从boost1.46升级到当前的boost1.52。我们有一些boost::TIME_UTC的用法,我根据https://svn.boost.org/trac/boost/ticket/6940将其更改为boost::TIME_UTC_.但是,我们也在某些使用boost1.49的linux机器上构建源代码,这些机器不知道boost::TIME_UTC_。是否有任何建议的方法可以将boost1.49和1.52与TIME_UTC并行使用? 最佳答案 将所有内容更改为TIME_UTC_。然后使用这个:#inc

c++ - 假设 time_t 以秒为单位有多安全?

我正在对时间进行大量计算,通过添加秒数来构建相对于其他时间对象的时间对象。该代码应该在嵌入式设备和服务器上运行。大多数文档都说time_t是某种算术类型,通常存储自纪元以来的时间。假设time_t存储自某事以来的秒数有多安全?如果我们可以这样假设,那么我们就可以只使用加法和减法,而不是使用localtime、mktime和difftime。到目前为止,我已经通过使用constexprbooltime_tUsesSeconds解决了这个问题,表示假设time_t使用秒数是否安全。如果假设time_t以秒为单位是不可移植的,有没有办法自动初始化该常量?time_ttimeByAddingS

c++ - 如何从格式化字符串中获取 boost::posix_time::ptime

我有一个像“2012-03-28T08:00:00”这样的格式化字符串。我想获取年、月(字符串格式)、日期、小时、分钟、秒和日(字符串格式)。谁能建议我在boost中使用最简单的方法。谢谢 最佳答案 如果现有的from_string()方法不能满足您的需求,那么您可以使用时间输入方面,它允许您自定义解析字符串的格式。在您的情况下,您可以使用ISO扩展格式字符串,这样您就可以使用以下代码来解析您的字符串:boost::posix_time::time_input_facet*tif=newboost::posix_time::time

c++ - 如何在 C++ 中将 UTC 日期和时间转换为 time_t?

我想将以年、月、日等数字形式给出的UTC日期和时间转换为time_t。某些系统为此目的提供了诸如mkgmtime或timegm之类的函数,但这不是标准的,并且在我的Solaris系统上不存在。到目前为止,我找到的唯一解决方案是使用setenv将本地时区设置为UTC,然后调用mktime。然而,这种方法不是线程安全的、速度慢、不可移植,甚至会在我的系统上产生内存泄漏。我还看到过尝试使用gmtime确定当前UTC偏移量,然后将其添加到mktime的结果中的方法。但据我所知,所有这些方法都存在差距。毕竟,从本地时间到UTC的转换不是唯一的。您认为最好的解决方案是什么?

c++ - boost 定时器 : how to get time when I need?

所以我读了这个boostdocs但我还是不知道如何做这么简单的事情intmain(){//stuffstartTimer();//dostuffinti=getTimerValue();//stuff}所以为了获得我已经完成的事情的执行时间。怎么办? 最佳答案 使用boost::timer#includeintmain(){boost::timert;//starttiming...doubleelapsed_time=t.elapsed();...}请注意,boost::progress_timer的析构函数将显示时间。因此,如果