Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从C++;?_C++_Date_Datetime_C++11 - Fatal编程技术网

C++ 如何从C++;?

C++ 如何从C++;?,c++,date,datetime,c++11,C++,Date,Datetime,C++11,我正试图编写一个程序,解析一个表示格式为YYYYMMDD的日期的字符串(使用strtime()),并以周、月、日、年的形式打印它(使用put_time())。以下是我目前掌握的情况: #include <iostream> #include <sstream> #include <ctime> #include <iomanip> using namespace std; int main() { struct tm tm; s

我正试图编写一个程序,解析一个表示格式为YYYYMMDD的日期的字符串(使用
strtime()
),并以周、月、日、年的形式打印它(使用
put_time()
)。以下是我目前掌握的情况:

#include <iostream>
#include <sstream>
#include <ctime>
#include <iomanip>

using namespace std;

int main() {
    struct tm tm;
    string s("20131224");
    if (strptime(s.c_str(), "%Y%m%e", &tm)) {
        cout << put_time(&tm, "%A, %B %e, %Y") << endl;
    }
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main(){
struct-tm;
字符串s(“20131224”);
if(strtime(s.c_str(),%Y%m%e,&tm)){
cout试试这个(用Mac编译)

#包括
使用名称空间std;
int main(int argc,const char*argv[]{
常量字符串日[]={“太阳”、“星期一”、“星期二”,
“星期三”、“星期四”、“星期五”、“星期六”};
时间与时间;
tm*时间信息;
时间(&rawtime);
timeinfo=localtime(&rawtime);
int weekday=timeinfo->tm_wday;
cout试试这个(用Mac编译)

#包括
使用名称空间std;
int main(int argc,const char*argv[]{
常量字符串日[]={“太阳”、“星期一”、“星期二”,
“星期三”、“星期四”、“星期五”、“星期六”};
时间与时间;
tm*时间信息;
时间(&rawtime);
timeinfo=localtime(&rawtime);
int weekday=timeinfo->tm_wday;

cout这里有一种不使用C API的方法,而是使用C++11/14
工具和这个

上面的
date::sys\u days
只不过是
std::chrono::system\u clock::time\u point
typedef
,但精度为
days
,而不是平台提供的任何东西(微秒、纳秒,无论什么)。这意味着您可以轻松地向它添加其他持续时间,例如std::chrono::小时、分钟、秒、毫秒等

cout << date::format("%A, %B %e, %Y %H:%M", tp + 2h + 35min ) << endl;

Tuesday, December 24, 2013 02:35

cout这里有一种不使用C API,而是使用C++11/14
工具的方法

上面的
date::sys\u days
只不过是
std::chrono::system\u clock::time\u point
typedef
,但精度为
days
,而不是平台提供的任何东西(微秒、纳秒,无论什么)。这意味着您可以轻松地向它添加其他持续时间,例如std::chrono::小时、分钟、秒、毫秒等

cout << date::format("%A, %B %e, %Y %H:%M", tp + 2h + 35min ) << endl;

Tuesday, December 24, 2013 02:35

cout tm结构中的缺失字段可能会根据使用情况进行填充,没有要求填充缺失字段任何人都不会想到它会这么简单。我唯一要做的另一件事是添加
struct tm={0};
(将所有字段初始化为零)和
tm.tm_isdst=-1;
(强制DST查找以防止错误)。谢谢!tm结构中缺少的字段可能会根据使用情况进行填充,不需要填充缺少的字段。我从来没有想到这会这么简单。我唯一要做的另一件事是添加
struct tm={0};
(将所有字段初始化为零)和
tm.tm_isdst=-1;
(强制DST查找以防止错误)。谢谢!
Tuesday, December 24, 2013
cout << date::format("%A, %B %e, %Y %H:%M", tp + 2h + 35min ) << endl;

Tuesday, December 24, 2013 02:35