2014-08-28 100 views
0

我有以下代码:如何时间转换为整数

#include <ctime> 
#include <stdio.h> 
#include <iostream> 
#include <chrono> 
using namespace std; 

const std::string currentDateTime() { 
    time_t  now = time(0); 
    struct tm tstruct; 
    char  buf[80]; 
    tstruct = *localtime(&now); 
    strftime(buf, sizeof(buf), "%X", &tstruct); 

    return buf; 
} 

int main() { 
    std::cout << "Current Time is: " << currentDateTime() << std::endl; 
    return 0; 
} 

我编译此,我也得到:当前时间为:十八点30分11秒

我想知道如何转换那成一个整数,所以它只出现在18.5或者这些线上。我想这样做,因为我想创建一个时间表。
例如:如果10点半,我希望程序能够告诉我,我有什么主题(学校)。 类似这样的:

if(time == 10.5) 
    std::cout<<(subject); 

有关如何做到这一点的任何建议?我对C++相当陌生,而且我不确定我是否会以完全错误的方式去解决这个问题。有没有另一种方法来做到这一点? 在此先感谢。

+1

'18.5'不是一个整数。 – 2014-08-28 08:40:06

回答

2

我想你指的是时间转换为浮点数。在您的currentDateTime功能中,您已经使用struct tm。基于此,您可以通过以下方式获得float小时值:

time_t now = time(0); 
struct tm tstruct = *localtime(&now); 

float f = tstruct.tm_hour + tstruct.tm_min/60.0 + tstruct.tm_sec/3600.0; 
cout << f << endl; // prints 10.1025 at 10:06:09 
+0

我想这样做,但是当我运行它,我得到这个: 19.1711 当前时间为:├ÉÉÉÉÉ■电子邮件■║¸┐vÉÉÉÉÉÞ♣ç├QìL+╚âß☼♥┴←╔♂┴YÚ1\ ÉÉÉÉÉïUïýïà└ t☼ü8||☼ä♫小号♦]├ÉÉÉÉÉïUïýâý$í'↨┼v3┼ëE³SVïu♀ÞÃIIE]ÓYà█☼ä╬s☺W¯¯ 3ï¤ïÃëMõ9ÿ►_┼v☼äuì♦Aâ└0ëMõ =rμü¹Þ²☼ä¼s☺ü¹Ú²☼äás☺☼À├P§lq┼và└☼äÄs☺ìEÞ PS§Pq┼và└☼ä了!我♦h☺☺ìF∟WPÞO? ë^♦â─♀3█ë〜♀C9]Þ☼çáî♦ë3└ì〜►☼À╚ï┴┴ß►♂┴½½½VÞ▀Y3└_ ïM³^3═[THEL IO]├ÉÉÉÉÉïUïýâý► “MjÞä┼┼┼☼☼☼♦┴☺┴☺♦♦” 程序返回-1073741819(0xC0000005)执行时间:2.589 s 按任意键关键是要继续。 程序停止响应, – user3036519 2014-08-28 09:14:00

+0

没关系,我设法通过添加返回0来解决它;最后。 – user3036519 2014-08-28 10:49:26