我有这样的日期字符串:
"2015-11-27"
从他们那里我想确定星期几。
这个(live sample)就是我使用<ctime>
:
int dayOfWeek(std::string date){
int y, m, d; char c;
std::stringstream(date) >> y >> c >> m >> c >> d;
std::tm t = {0,0,0,d,m-1,y-1900};
std::mktime(&t);
return t.tm_wday;
}
但是我想知道在C ++ 11中是否有更规范的方法可以解决这个问题?
答案 0 :(得分:3)
您可以使用std:get_time()
将此类字符串翻译为std::tm
。
以下程序是在http://en.cppreference.com/w/cpp/locale/time_get发布的程序的修改版本。
可以看到std::get_time()
的有效格式说明符
http://en.cppreference.com/w/cpp/io/manip/get_time
#include <iostream>
#include <sstream>
#include <string>
#include <locale>
#include <ctime>
#include <iomanip>
int main()
{
std::string input = "2015-11-27";
std::tm t = {};
std::istringstream ss(input);
ss >> std::get_time(&t, "%Y-%m-%d");
std::mktime(&t);
std::cout << std::asctime(&t);
}
在http://ideone.com/xAEjsr处查看它。