Android 如何在C++;,
我正在从服务器Android 如何在C++;,,android,c++,c++11,Android,C++,C++11,我正在从服务器11/07/2020 10:57:13获取字符串,我正在将其转换为双倍值1604723233,但是转换后的双倍值比实际值小1小时 下面是我如何试图转换 double StringDateToDouble(string &strDate, string format) { tm currentTime = CurrentTimeToTM(); tm timeinfo; string strTimeZone = currentTime.tm_zone;
11/07/2020 10:57:13
获取字符串,我正在将其转换为双倍值1604723233
,但是转换后的双倍值比实际值小1小时
下面是我如何试图转换
double StringDateToDouble(string &strDate, string format)
{
tm currentTime = CurrentTimeToTM();
tm timeinfo;
string strTimeZone = currentTime.tm_zone;
strDate.append("");
strDate.append(strTimeZone);
strptime(strDate.c_str(), format.c_str(), &timeinfo);
time_t timeInSec = mktime(&timeinfo);
return static_cast<double>(timeInSec);
}
tm CurrentTimeToTM()
{
struct tm timeinfo = {0};
time_t rawtime;
rawtime = time(&rawtime);
localtime_r(&rawtime, &timeinfo);
return timeinfo;
}
double-StringDateToDouble(字符串和标准日期,字符串格式)
{
tm currentTime=CurrentTimeToTM();
tm时间信息;
字符串strTimeZone=currentTime.tm_zone;
标准日期。附加(“”);
strDate.append(strTimeZone);
strtime(strDate.c_str()、format.c_str()、和timeinfo);
time\u t TIMEINSE=mktime(&timeinfo);
返回静态_cast(timeinse);
}
tm CurrentTimeToTM()
{
struct tm timeinfo={0};
时间与时间;
rawtime=时间(&rawtime);
本地时间(绘图时间和时间信息);
返回时间信息;
}
正确的方法是什么?这里有什么遗漏吗?非常感谢您的建议。以下是我的建议代码:
#包括
#包括
#包括
#包括
#包括
常数int IST=(5*60+30)*60;//格林尼治时间+05:30(以秒为单位)
双StringDateToDouble(标准::字符串和标准日期),
std::string&&format=“%D%T”){
std::tm;
std::istringstream ss(标准日期);
ss>>std::get_time(&tm,format.c_str());
返回(std::mktime(&tm)-时区)-列表;
}
int main(){std::cout以下是我建议的代码:
#包括
#包括
#包括
#包括
#包括
常量int IST=(5*60+30)*60;//GMT+05:30(以秒为单位)
双StringDateToDouble(标准::字符串和标准日期),
std::string&&format=“%D%T”){
std::tm;
std::istringstream ss(标准日期);
ss>>std::get_time(&tm,format.c_str());
返回(std::mktime(&tm)-时区)-列表;
}
In主():STD::CUTE代码的目的是什么?为什么需要一个日期的<代码>双< /代码>?如何用“代码>双< /代码>表示日期?C++标准不保证<代码> TimeTyt(0)
是1970-01-01T00:00Z
。C++20引入了一个保证,即time\u自_epoch以来
将与UNIX epoch相对。顺便说一句,不能保证它是整数类型,或者它的值是自某个epoch以来的秒数。哦,精确的一小时的时间听起来像是夏令时的问题。@Vijay这是因为时区的差异。你从服务器得到的响应是在哪个时区?代码的目的是什么?为什么你需要一个日期的<代码>双< /代码>?一个日期是如何用<代码>双< /代码>来表示的?C++标准不能保证<代码>时间>(0)
是1970-01-01T00:00Z
。C++20引入了一个保证,即time\u自_epoch以来
将与UNIX epoch相对。顺便说一句,不能保证它是整数类型,或者它的值是自某个epoch以来的秒数。哦,精确的一小时的时间听起来像是夏令时的问题。@Vijay这是因为时区差异e。您从服务器得到的响应在哪个时区?