首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>C/C++>C++>在Linux下验证日期是否合法
在Linux下验证日期是否合法
来源: 发布时间:2008-01-25 发布人: 浏览: 人次   字体: [ ]  

近日在linux下用C++开发一个嵌入式规约转换软件,其中有对时功能,需要对收到的日期时间进行合法性验证,通过后再设置本机日期时间。时间的合法性检查比较简单,而日期就复杂一些,需要考虑大小月,闰年。

我的思路是:先对年月日进行简单的范围检查,之后将其形成一个tm结构,再调用mktime将该tm转换为一个time_t,在此过程中mktime将对不合法的日期自动进行规范化,如输入为2007-6-31将被转化为2007-7-1。因此比较转换前后的年月日是否相同就能知道日期是否合法。为了便于比较,再调用localtime将time_t转化为tm进行比较。根据比较结果来验证日期是否合法。

代码如下:

  bool check_date(int year, int month, int day)
  
{
    
if (year < 1900 || month <= 0 || month > 12 || day <= 0 || day > 31)
    
{
      
return false;
    }

 
    
//form time
    struct tm tm_new;

    tm_new.tm_year 
= year - 1900;
    
    tm_new.tm_mon 
= month - 1;

    tm_new.tm_mday 
= day;
    
    tm_new.tm_hour 
= 0;
  
    tm_new.tm_min 
= 0;
    
    tm_new.tm_sec 
= 0;

    time_t time_new 
= mktime(&tm_new);
    
    localtime_r(
&time_new, &tm_new);

    
if (tm_new.tm_year != year - 1900 || tm_new.tm_mon != month - 1 || tm_new.tm_mday != day)
    
{
      
return false;
    }

    
else
    
{
      
return true;
    }
 
  }

相 关 文 章   发布商链接
·祥解C++中的this指针
·vc读取XML文件中的文本代码
·C++程序中内存划分介绍
·C++计算含括号四则表达式的模板
·vc命令行调用winrar.exe进行文件解压...
·基于C++的DES加密算法实现代码实例
·什么是单例模式?C++中单例模式对象的...
·C++语言中多重继承下的虚函数调用
·c++获取Windows 2000/XP操作系统的安...
·实例讲解C++中CopyFileEx函数的简单...
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·如何在C++中创建持久对象的方
·c++实现获取IE缓存文件夹中的
·C++中regex库中静态正则表达...
·VC++编写交互程序时将打印结...
·实例讲解C++中CopyFileEx函数
·c++获取Windows 2000/XP操作...
·C++语言中多重继承下的虚函数
·什么是单例模式?C++中单例模...
·基于C++的DES加密算法实现代...
·vc命令行调用winrar.exe进行...
·C++计算含括号四则表达式的模
·C++程序中内存划分介绍
·vc读取XML文件中的文本代码
·祥解C++中的this指针
·C++实现仿Office风格的颜色选
热 门 文 章
·基于C++的DES加密算法实现代...
·实例详细介绍各种字符集编码...
·vc读取XML文件中的文本代码
·祥解C++中的this指针
·vc命令行调用winrar.exe进行...
·C++中regex库中静态正则表达...
·C语言程序设计入门学习六步曲...
·VC++编写交互程序时将打印结...
·C++语言中多重继承下的虚函数...
·实例讲解C++中CopyFileEx函数...
·C++实现RGB和HSL颜色转换代码...
·C++不是万能的
·c++实现获取IE缓存文件夹中的...
·什么是单例模式?C++中单例模...
·谈谈对C和C++中include指令的...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .