zoukankan      html  css  js  c++  java
  • 年月日格式日期转换求取时间差[C]

      今天二姐问了一个问题,是给定两个时间,要求求出两个时间经历的时间差(秒)。给定时间的时间是int类型的年、月、日、时、分、秒。

      开始她说这个太复杂,给了两个时间,要算的话还得自己计算哪年是闰年,闰月之类的,我一听也糊涂了。

      本着有问题,"一百度二谷歌、三看技术文档"的原则,我查了一下,发现这个问题其实非常好解决,因为C专门有Standard C Time&Date的库,可以将你给定的时间转换成秒为单位的数据。测试程序:

    #include <iostream.h>
    #include<time.h>
    //将年月日时间转换为结构体,返回距离1970年1月1日0:0:0的秒数
    time_t timeconvert(int year,int mon,int day,int hour,int min,int sec,struct tm &time1)
    {
    	time_t second; 
    	time1.tm_sec=sec;/* Seconds: 0-59 (K&R says 0-61?) */
    	time1.tm_min=min;/* Minutes: 0-59 */
    	time1.tm_hour=hour;/* Hours since midnight: 0-23 */
    	time1.tm_mday=day;/* Day of the month: 1-31 */
    	time1.tm_mon=mon-1;/* Months *since* january: 0-11 */
    	time1.tm_year=year-1900;/* Years since 1900 */
    	//改动周几不影响返回的时间值,可以通过改动日期的日数来达到修改时间  
    	time1.tm_wday=1;
    	return second=mktime(&time1); 	
    }
    // char *asctime( const struct tm *ptr );	
    //函数将ptr所指向的时间结构转换成下列字符串
    //day month date hours:minutes:seconds year\n\0
    int main(int argc, char *argv[])
    {
    	struct tm time1,time2;
    	time_t sec1,sec2;
    	double deta_sec;
    	sec1=timeconvert(2000,11,5,20,13,50,time1);
    	sec2=timeconvert(2000,11,5,20,12,30,time2);
    	deta_sec=difftime(sec1,sec2);//sec1-sec2 
    	cout<<"time1:"<<asctime(&time1)<<endl;
    	cout<<"time2:"<<asctime(&time2)<<endl;
    	cout<<"time1 second:"<<sec1<<endl;
    	cout<<"time2 second:"<<sec2<<endl;	
    	cout<<"time1-time2:"<<deta_sec<<endl;
    	cout<<"current second:"<<time(0)<<endl;
    	return 0;
    }
    

      

  • 相关阅读:
    控制台布局编程小结
    代码健壮、测试的必要性
    《Scott Mitchell 的ASP.NET 2.0数据教程》之二 BLL层 学习过程中的问题
    阅读张孝祥的《大胆尝试随需消费的软件培训模式》后感触良多
    Northwind 数据库相关练习
    学习Membership
    WEB标准化参考资料
    商学院实验班I期 5月 教学计划
    怎样设计和创建数据库?
    PathMatchingResourcePatternResolver
  • 原文地址:https://www.cnblogs.com/followyourheart/p/20111105_ctime.html
Copyright © 2011-2022 走看看