当前位置:  编程技术>JQuery 判断某个属性是否存在hasAttr用法 iis7站长之家

C/C++判断传入的UTC时间是否当天的实现方法

    来源: 互联网  发布时间:2014-10-23

    本文导语:  这里先给出一个正确的版本: 代码如下:#include #include using namespace std; bool IsInToday(long utc_time){    time_t timeCur = time(NULL);    struct tm curDate = *localtime(&timeCur);    struct tm argsDate = *localtime(&utc_time);    if (argsDate.tm_year == curDate.tm...

这里先给出一个正确的版本:

代码如下:

#include
#include

using namespace std;

bool IsInToday(long utc_time){

    time_t timeCur = time(NULL);
    struct tm curDate = *localtime(&timeCur);

    struct tm argsDate = *localtime(&utc_time);

    if (argsDate.tm_year == curDate.tm_year &&
        argsDate.tm_mon == curDate.tm_mon &&
        argsDate.tm_mday == curDate.tm_mday){
        return true;
    }

    return false;
}

std::string GetStringDate(long utc_time){

    struct tm *local = localtime(&utc_time);
    char strTime[50];
    sprintf(strTime,"%*.*d年%*.*d月%*.*d日",
            4,4,local->tm_year+1900,
            2,2,local->tm_mon+1,
            2,2,local->tm_mday);

    return strTime;
}

std::string GetStringTime(long utc_time){

    struct tm local = *localtime(&utc_time);
    char strTime[50];
    sprintf(strTime,"%*.*d:%*.*d:%*.*d",
            2,2,local.tm_hour,
            2,2,local.tm_min,
            2,2,local.tm_sec);
    return strTime;
}

void ShowTime(long utc_time){

    if (IsInToday(utc_time)){
        printf("%sn",GetStringTime(utc_time).c_str());
    }else{
        printf("%sn",GetStringDate(utc_time).c_str());
    }

}

int main(){

    ShowTime(1389998142);
    ShowTime(time(NULL));

    return 0;

}

在函数中struct tm *localtime(const time_t *);中返回的指针指向的是一个全局变量,如果把函数bool IsInToday(long utc_time);写成样,会有什么问题呢?

代码如下:

bool IsInToday(long utc_time){

    time_t timeCur = time(NULL);
    struct tm* curDate = localtime(&timeCur);

    struct tm* argsDate = localtime(&utc_time);

    if (argsDate->tm_year == curDate->tm_year &&
        argsDate->tm_mon == curDate->tm_mon &&
        argsDate->tm_mday == curDate->tm_mday){
        return true;
    }

    return false;

}


这里把curDate和argsDate声明成了指针。运行程序就会发现,这个函数返回的总是ture,为什么呢?
因为在struct tm* curDate = localtime(&timeCur);中返回的指针指向的是一个全局变量,即curDate也指向这个全局变量。
在struct tm* argsDate = localtime(&utc_time);中返回额指针也指向的这个全局变量,所以argsDate和cur指向的是同一个全局变量,他们的内存区域是同一块。
在第二次调用localtime()时,修改了全局变量的值,curDate也随之改变,因此curDate == argsDate;所以返回的结果衡等于true。

    
 
 

您可能感兴趣的文章:

  • C++ Vectors 成员 empty():判断Vector是否为空(返回true时为空)
  • shell如何判断文件是否存在,如何判断变量是否为空
  • javascript操作html复选框checkbox:如何判断复选框是否被选中
  • 在判断自符是否等于**时,用equals(“**”),那么如果我想判断它的值是否>=2该用什么呢?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • unix下如何判断一个文件夹是否存在?(也就是某个路径是否存在)
  • java实现判断字符串是否全是数字的四种方法代码举例
  • linux 下的自解压文件是什么格式,如何判断文件是否为自解压c++或者脚本判断均可
  • 在JSP如何判断str1是否在str2中?是否有相应的函数?
  • JQuery 判断某个属性是否存在hasAttr用法
  • 请问如何判断一个文件夹是否存在
  • java判断远程服务器上的文件是否存在的方法
  • PHP判断文章里是否有图片的简单方法
  • PHP判断是否有Get参数的方法
  • informix数据库中怎么判断一个表是否存在?(esql/c)
  • 如何判断目录是否为空
  • 请问如何判断 request.getparameter 是否有值
  • mysql 判断记录是否存在方法比较
  • mysql中判断记录是否存在方法比较
  • jquery怎么判断html元素是否存在
  • 在BBS中怎么样判断用户是否在线?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux->shell-> if 条件判断,关于软连接的判断!
  • 怎么判断串口已经收到数据,并及时读出?怎么判断串口已经将写入的数据发送完毕?
  • 我是学pb的,判断闰年的是isdate("2-28"),但在java里怎么判断呢?
  • mysql中如何判断当前是字符 mysql判断字段中有无汉字
  • 知道TCP/UDP的包头,如何判断其应用层协议类型,struct tcphdr和 struct udphdr结构中那个变量能判断应用层协议类型。
  • c#判断字符是否为中文的三种方法分享(正则表达式判断)
  • 如何判断在线用户,主要是如何判断用户关闭所有窗口(即他已经不在线了)?
  • 如何判断一个数是否为4的幂次方?若是,并判断出来是多少次方?
  • 判断图片-判断位图是否是黑白图片的方法
  • 判断文件格式的c库函数
  • sftp命令如何判断成功与否?
  • Shell条件判断疑问?
  • 如何判断套接字是被关闭了。
  • 如何判断一个数是否为2的幂次方?若是,并判断出来是多少次方?
  • 求一个bash脚本判断网络通断的思路
  • 如何判断包已经接收完?
  • 简单问题:如何判断计算机的某一端口正在使用
  • 怎样判断当前系统是冷开机还是热开机?
  • 在线求解-shell编程-如何判断一个目录是空目录
  • 请教几个关于判断SD卡状态的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3