Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.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
Android 如何在C++;,_Android_C++_C++11 - Fatal编程技术网

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。您从服务器得到的响应在哪个时区?